今天学继承私有成员的时候,书上写父类的私有成员是无法被子类继承的。子类构造函数时要先调用父类的构造函数,那么当父类的构造函数有对父类的私有成员初始化时,子类创建一个对象,传入一个对应的原本该继承的私有成员的参数,那么这个参数有什么用?自己写了段代码测试下,结果这个参数改变了原有父类的私有成员。怎么会子类的参数反而改变了父类的成员?
#include <stdio.h>
class base
{
private:
int baseprivate;
public:
base(int a)
{
baseprivate=a;
printf("父类构造...\n");
}
~base()
{
printf("父类析构...\n");
}
void print()
{
printf("baseprivate=%d\n",baseprivate);
}
};
class child :public base
{
public:
child(int a,int b):base(b)
{
childprivate=a;
printf("子类构造...\n");
}
~child()
{
printf("子类析构...\n");
}
private:
int childprivate;
};
int main()
{
base obj1(1);
obj1.print();
printf("父类创建完成//////////\n");
child obj2(1,2);
obj2.print();
printf("子类创建完成//////////\n");
return 0;
}
慕瓜9220888
慕仰1766564
相关分类