C++进阶13(继承中的对象模型、构造和析构的顺序)

如下cpp文件名称为(继承中的对象模型) 在下边命令中会用到名称

#include <iostream>

using namespace std;

//继承中的对象模型

class Base
{
public:
	int m_A;
protected:
	int m_B;
private:
	int m_C;
};

//父类中所有的非静态的成员属性都会被子类继承下去
//父类中私有成员属性是被编译器给隐藏了,因此时访问不到的,但是确实被继承下去了
class son :public Base
{
public :
	int m_D;
};
//利用开发人员命令提示工具查看对象模型(详见CSDN)

void test01()
{

	cout << "size  of  son= " << sizeof(son) << endl;
}


int main()
{
	test01(); 
	cout << "\n " << endl;
	system("pause");
	return 0;
}

利用开发人员命令提示工具查看

详细见图

继承中的构造析构函数

#include <iostream>

using namespace std;

//子类继承父类后,当创建子类对象,也会调用父类的构造函数
//问题:父类和子类的构造和析构顺序谁先谁后

//顺序:父类构造   子类构造   子类析构    父类析构
class Base
{
public :
	Base()
	{
		cout << "Base的构造函数" << endl;
	}
	~Base()
	{
		cout << "Base的析构函数" << endl;
	}
};
class son : public Base
{
public:
	son()
	{
		cout << "son的构造函数" << endl;
	}
	~son()
	{
		cout << "son的析构函数" << endl;
	}
};

void test01()
{
	//Base b;
	son s;
}
int main()
{
	test01();
	cout << "\n " << endl;
	system("pause");
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值