#include <iostream>
#include <string>
using namespace std;
/************************************************************************/
/*父类非静态成员,子类都会继承
公有继承:按父类成员原有成员权限继承,
父类公有成员,在子类中还是公有成员
父类保护成员,在子类中还是保护成员
父类私有成员,在子类中还是私有成员,子类不可访问,因为编译器将继承过来的私有成员隐藏了
保护继承:父类公有、保护权限成员,在子类中被继承为保护权限,父类私有成员,在子类中还是私有成员
私有继承:父类公有、保护、私有成员,在子类中被继承为私有权限
/************************************************************************/
class Person{
public:
int m_A;
protected:
int m_B;
private:
int m_C;
};
class Son:public Person
{
int m_D;
};
void test1()
{
//父类的所有非静态成员属性,都会被子类继承
//父类的私有属性是被编译器隐藏了,因此不能被访问到,但是确实被继承了
cout<<"子类对象大小:"<<sizeof(Son)<<endl;
}
int main()
{
test1();
return 0;
}
//通过编译器自带工具命令查看类对象模型,可以查看成员属性分布
输入:cl /d1 reportSingleClassLayout类名 cpp源文件
cl /d1 reportSingleClassLayoutSon my_class.cpp