类和类之间的关系有两种:
组合:a part of… 一部分的关系
继承:a kind of… 一种的关系
写一段最简单的代码:
class A
{
public:
int a;
protected:
int b;
private:
int c;
};
//继承,A:基类、父类 B:派生类、子类
class B:public A
{
public:
int d;
protected:
int e;
private:
int f;
};
1.A ma定义的一个对象ma,占用12个字节,B mb定义的一个对象mb,真用24个字节,因为B类继承A类中的a b c。
2.A中有一个a,如果用B中也有一个a,那么不能认为是同一个a,因为他们所在的作用域是不同的。(显然现在B定义的对象占用28个字节)
访问限定表:
多重继承的时候,一步一步进行分析就可以啦。
总结:
1.外部只能访问public的成员,protected和private的成员无法直接访问。
2.在继承的结构中,派生类可以继承基类中private中的成员,但是派生类是无法进行直接访问的。
3.protected的主要用处:
在基类中定义的成员,想被派生类访问,但是不想被外部访问,那么就把基类中的成员定义成protected。
如果派生类和外部都不打算进行访问,那么在基类中就设置成private。
默认的继承方式:
派生类是class定义的:默认是private
派生类是struct定义的:默认是public