C++类中一个构造函数调用另一个构造函数

本文探讨了两种在C++中一个构造函数调用另一个构造函数的方法:使用placement new技术以及VS2013特有的直接调用方式。虽然第二种方法在某些编译器中不适用,但它提供了便利性。文章还提出了对构造函数互调在标准文档中的规定及其未来编译器支持的疑问。
摘要由CSDN通过智能技术生成

class A
{
	int a;
	int b;
	int c;
public:
	A(int aa, int bb) : a(aa), b(bb),c(0)  { cout << "aa bb" << endl; }
	A(int aa, int bb, int cc);
};

上面类中,已经有一个构造函数,形参有两个,我们又重载一个有3个形参的构造函数,为了减少代码量,就想着让3个参数的构造函数调用2个参数的构造函数,然后在执行一些自己的代码,这就如同派生类先调用基类的同名函数,在执行自己特有的代码。这种机制如何实现呢?

做法一:在3个参数中显示调用2个参数的构造函数(这肯定是可以的, 构造函数是类的成员函数),此时要用到placement new技术。

3参数构造函数可以这样实现:

	A::A(int aa, int bb, int cc) 
	{
		new (this) A(aa, bb);
		...
	}
构造函数有2个执行阶段: 1)是在初始化列表的初始化阶段;2)在构造
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值