包含
class a
{
private:
int da;
public:
void show()
{
cout<<"a"<<endl;
}
};
class b
{
private:
int db;
a ca1;
public:
a ca2;
void show()
{
cout<<"b"<<endl;
}
};
int main(void)
{
b b;
b.ca2.show();
b.ca1.show();//此句报错
return 0;
}
类包含和类的逻辑是一样的。类内可访问类内的private,类外无法访问private
private | public | private中的类 | public中的类 | |
类原型 | 可以访问 | 可以访问 | 可以访问其public | 可以访问其public |
类对象 | 不可访问 | 可以访问 | 不可访问 | 可以访问其public |
公有继承
class a
{
private:
int da;
public:
void showa()
{
cout<<"a"<<endl;
}
};
class b:public a
{
private:
int db;
public:
void show()
{
cout<<"b"<<endl;
}
};
int main(void)
{
b b;
b.showa();//可调用a的public
return 0;
}
对象可直接调用a的public,当ab有同名方法/数据时,通过::指定,否则默认为b的方法/数据
私有继承
class a
{
private:
int da;
public:
void showa()
{
cout<<"a"<<endl;
}
};
class b:private a
{
private:
int db;
public:
void show()
{
showa();//可直接调用a的public
cout<<"b"<<endl;
}
};
int main(void)
{
b b;
b.show();
b.showa();//此行报错
return 0;
}
类定义可直接调用a的public,当ab有同名方法/数据时,通过::指定,否则默认为b的方法/数据