|
发表于 2020-7-14 15:00:01
|
显示全部楼层
//假设有类Base和Drived如下:
class Base
{
private:
char name[10];
};
class Drived:public Base
{
//不论是public继承还是private继承,Drived对象的内存布局
//都与下面的Drived_likeness一样,所不同的是可访问性和对name的操作.
//因为这里的name来自Base,如果name在Base中被声明为private的,
//那么,虽然Drived对象中有name的位置,但不能直接访问.所有对name的
//操作都要依靠基类的非私有函数.
//如果name在Base中被声明为protected的或public的,本类的函数就可以
//访问了. 如果是private继承,name的可访问性就变为private的,public继承则
//name可访问性不变(但若name在基类中就是private的,则不可访问).
//错误观点1:如果是私有的父类成员,那么子类是不可能继承的吧。
//这个话好象是在说Drived中就没有name的位置,所以错.
//错误观点2:子类继承后相当于一个引用一样,调用的时候还是用到父类的定义
//怎么扯到引用上去了呢
//再强调一启遍:子类对象也是一个整体,包括从父类继承部分(如本例中的name)
//和自己新增部分(如本例中的age)
private:
int age;
};
class Drived_likeness
{
private:
char name[10];
int age;
};
|
|