1. 即使基类中私有和受保护成员对用户是不可见的,但它们仍旧在内存中占据位置。
2. 派生类中变量不是根据访问标号pub/pro/pri来排列的。而是根据1)不同类
2)在类中声明顺序来排序的
#include <iostream>
using namespace std;
class Base{
public:
Base(int base1,int base2,int base3) :
publicBase(base1), protectedBase(base2),privateBase(base3) {}
int publicBase;
protected:
int protectedBase;
private:
int privateBase;
};
class Derived: public Base{
public:
Derived(int base1, int base2, int base3, int derived1, int derived2, int derived3,int derived4) :
Base(base1,base2,base3), publicDerived(derived1), protectedDerived(derived2), privateDerived(derived3),publicDerived2(derived4) { }
int publicDerived;
private:
int privateDerived;
protected:
int protectedDerived;
public:
int publicDerived2;
};
int main(){
cout << sizeof(Base) << " " << sizeof(Derived) << endl; //12 28
Derived obj(1,2,3,4,5,6,7);
cout<<obj.publicBase<<" "<<obj.publicDerived<<endl; //1 4
int *p = (int *)(&obj);
cout << p[0] << " " << p[1] << " "<< p[2]<< " "; // 1 2 3
cout << p[3] << " " << p[4] << " "<< p[5]<<" "<<p[6] << endl; //1 2 3 4 6 5 7 !!! 6 5 7
return 0;
}