C++ 不能在构造函数中调用构造函数

本文探讨了在C++中构造函数内嵌套调用构造函数的问题,指出这种做法可能导致意外的对象创建和资源分配错误。示例代码展示了当在构造函数中尝试使用另一个构造函数给成员变量赋值时,实际上会产生一个新的匿名对象,而非修改当前对象的状态。程序的输出显示,由于构造函数内的嵌套构造函数,成员变量`c`的值变为乱码,强调了这种做法的潜在危险。
摘要由CSDN通过智能技术生成
#include	<iostream>
using namespace	std;

class MyTest{
	public:
		MyTest() {

		}
		
		MyTest(int	a, int	b, int	c){ //有参 构造函数
			_a = a;
			_b = b;
			_c = c;
		}

		// 构造中调⽤构造是危险的⾏为
		MyTest(int	a, int	b){ //有参数的构造函数,两个参数
			_a = a;
			_b = b;
			//构造函数中,无法嵌套构造函数 来通过构造函数给自己的成员变量赋值,
			//此构造函数已经又创建了另一个对象。
			MyTest(a, b, 100);	//产生新的匿名对象
			//新的匿名对象 a->1 b->2 c ->100

		}

		~MyTest(){
			printf("MyTest~:%d,	%d,	%d\n", _a, _b, _c);
		}

		int	getC(){
			return	_c;
		}
		void setC(int	val){
			_c = val;
		}

	private:
		int	_a;
		int	_b;
		int	_c;
};

int	main(){
	MyTest	t1(1, 2); //t1.a -->1  t1.b -->2 t1.c--->? 

	cout << "c:" << t1.getC() << endl;  
}

注:c最后的输出结果为乱码,构造函数中,无法嵌套构造函数 来通过构造函数给自己的成员变量赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值