
若继承类型为private希望基类中某些公有成员在派生类中也是公有的如何办到
classX{inta;public:intb;X(){a=3;b=5;}intget(){returna;}voidprint(){cout<<a<<endl;}};c...
class X
{
int a;
public:
int b;
X(){a=3;b=5;}
int get(){return a;}
void print(){cout<<a<<endl;}
};
class Y:X
{
int b;
public:
void make(){b=get()+10;}
void print(){ X::print();cout<<b<<endl;}//此处如果派生函数与基函数同名调用基函数要加 基类名::函数名(),若不同名则无事
X::b;//这样做为什么不能编译通过?
X::get;//这样做为什么不能编译通过?
};
int main()
{
X x1;
Y y1;
y1.make();//b=13
cout<<y1.b<<y1.get()<<endl;
x1.get();//a=3
y1.print();//a=3,b=13
} 展开
{
int a;
public:
int b;
X(){a=3;b=5;}
int get(){return a;}
void print(){cout<<a<<endl;}
};
class Y:X
{
int b;
public:
void make(){b=get()+10;}
void print(){ X::print();cout<<b<<endl;}//此处如果派生函数与基函数同名调用基函数要加 基类名::函数名(),若不同名则无事
X::b;//这样做为什么不能编译通过?
X::get;//这样做为什么不能编译通过?
};
int main()
{
X x1;
Y y1;
y1.make();//b=13
cout<<y1.b<<y1.get()<<endl;
x1.get();//a=3
y1.print();//a=3,b=13
} 展开
1个回答
展开全部
若继承类型为private希望基类中某些公有成员在派生类中也是公有的如何办到
这是不可能的,你要那样的话 ,最好就是public继承
private继承后 成员在派生类中的访问属性是固定的
建议你认真看看书
实际中private继承和protected继承用的比较少
这是不可能的,你要那样的话 ,最好就是public继承
private继承后 成员在派生类中的访问属性是固定的
建议你认真看看书
实际中private继承和protected继承用的比较少
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询