对象声明周期的管理——构造函数初始化列表

本例程探讨:

 1 在类B中组合了其它类A的对象时,构造函数和析构函数的调用顺序

 2 如何在定义类B的对象时,通过构造函数初始化列表,初始化其组合的类A的对象。

#include<iostream>

using namespace std ;

class A
{
public:
	A(int _a)
	{
		m_a = _a ;
		cout << "构造函数 a " << m_a << endl ;
	}

	~A()
	{
		cout << "析构函数 a " << m_a << endl ; 
	}

private:
	int m_a ;
};

//构造函数初始化列表 解决:在B类中 组合两个A类对象(A类设计了构造函数)
//根据构造函数的调用规则,写了A的构造函数,必须要用,但现有语法没有机会初始化A 
//其实质:新的语法 构造函数初始化列表派上用场
class B
{
public:
	//在B的构造函数中写上a的构造函数
	B(int _b1 ,int _b2):a1(1),a2(2),c(0)
	{
		b1 = _b1 ;
		cout << "b1 " << b1 << endl ;
		b2 = _b2 ;
		cout << "b2 " << b2 << endl ;
	}

	B(int _b1 ,int _b2, int m , int n):a2(m),a1(n),c(0)
	{
		b1 = _b1 ;
		cout << "b1 " << b1 << endl ;
		b2 = _b2 ;
		cout << "b2 " << b2 << endl ;
	}

	~B()
	{
		cout << "B的析构函数" << endl ;
	}

private:
	int b1 ;
	int b2 ;
	A a1 ;
	A a2 ;
	const int c ;
};

//构造函数执行顺序:
//先执行 被组合对象的构造函数,如果组合对象有多个 按照定义的顺序调用,而不是按照初始化列表的顺序
//析构函数:和构造函数的调用顺序相反
void objplay()
{
//	A a1(10);
//	B b1(3,4) ;
	//1 参数传递
	B b2(1,2,3,4) ;// b1 b2 a2 a1 
	//2 构造函数调用顺序为 a1=4, a2=3, b1, b2
	//3 析构函数调用顺序 b2, b1, a2, a1
}

void main()//构造函数初始化列表
{
	objplay() ;
	system("pause");
}



1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值