【笔记】C++类实例作为值传递,会调用拷贝构造函数

定义一个类:

class Text1{
public:
	Text1() {
		pub = 0;
		pri = 0;
		pro = 0;
		cout << "Text1的默认构造函数调用" << endl;
	}
	Text1(int b, int i, int o) {
		pub = b;
		pri = i;
		pro = o;
		cout << "Text1的重载构造函数调用" << endl;
	}
	Text1(const Text1& p) {
		pub = p.pub;
		pri = p.pri;
		pro = p.pro;
		cout << "Text1的拷贝构造函数调用" << endl;
	}
	~Text1() {
		cout << "Text1的析构函数调用" << endl;
	}
	int pub;
	int getValue(int);
private:
	int pri;
protected:
	int pro;
};

程序主体代码:

void text1(Text1 p) {

}

int main(){

	Text1 A(10, 20, 30); 
	cout << "\n**** 代码结束 ****" << endl;
	return 0;
}

此时的输出是

 这是一个最基本的类的开辟回收过程。

当我们调用空实现函数text1(Text1 p)并将A作为值传递进去时

void text1(Text1 p) {

}

int main(){

	Text1 A(10, 20, 30); 
	text1(A);
	cout << "\n**** 代码结束 ****" << endl;
	return 0;
}

输出为

 此时在A构造函数调用后,多了一个Text1的拷贝构造和析构,也就是函数text1(Text1 p)中p的实例化和此函数结束时系统回收动作的析构函数调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值