【答案解析】(1)应添加“BA(int m){a=m;}”。
(2)应添加“PA1(int m,int n):BA(n){b=m;}”。
(3)应添加“PA2(int m,int n,int k):PA1(n,k){c=m;}”。
(4)应添加“cout<<geta()<<" "<<getb()<<" "<<c<<endl;”。
答案考生文件夹
[解析] 根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA,在BA()中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(int m),在函数内部对成员a赋值,故第1处的语句应添加“BA(int m){a=m;}”。根据第2处的要求,构造函数的形式为“PA1(int m,int n)”,m赋值给PA1类成员b,将n作为基类BA构造函数的参数值传入,故第2处应添加“PA1(int in,int n):BA(n){b=m;}”。根据第3处的要求,函数形式为PA2(int m,int n,int k),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n,因此第3处应添加“PA2(int m,int n,int k):PA1(n,k){c=m;}”。根据第4处的要求,PA2类公有派生于PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta()和getb()来获得基类私有成员a和b,再输出PA2的私有成员c即满足要求,因此第4处应添加“cout<<geta()<<" "<<getb()<<" "<<c<<endl;”。