MOOC清华《面向对象程序设计》第3章:拷贝构造函数实验

#include <iostream>
using namespace std;

class Test{
public:
	Test(){
		cout << "Test()" << endl;
	}//缺省构造函数 
	Test(const Test& src){
		cout << "Test(const Test&)" << endl;
	}//拷贝构造函数 
	~Test(){
		cout << "~Test()" << endl;
	}//析构函数 
};

void func1(Test obj){
	cout << "func1()..." << endl;
}//类作为参数类型 

Test func2(){
	cout << "func2()..." << endl;
	return Test();//返回缺省构造函数 
}//类作为返回类型 

int main(){
	cout << "main()..." << endl;
	Test t;
	func1(t);
	t = func2();
	return 0;
}


测试结果说明:
第二行的 Test() 是对象 t 在构造时调用的缺省构造函数;
第三行的 Test(const Test&) 是以对象 t 为源(source,简写为src)生成一个新的对象,传给 func1() ,所以调用了拷贝构造函数;
第五行的 ~Test() 是 func1() 退出时,把参数 t 释放掉,所以调用了析构函数;
第七行的 Test() 是 func2() 返回一个构造函数时,调用的构造函数;
第八行的 ~Test() 是把 func2() 产生的临时对象给释放掉,调用的析构函数;
最后一行的 ~Test() 是 main 函数退出时,局部变量 t 被释放所调用的析构函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值