#include "stdafx.h"
#include<iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"construct"<<endl;
}
public:
A(constA &other)
{
cout<<"copy construct"<<endl;
}
public:
A &operator=(const A &other)
{
cout<<"operator"<<endl;
return*this;
}
public:
~A()
{
cout<<"delete"<<endl;
}
};
A fun(A a)//实参复制给形参调用拷贝构造
{
A b=a;//调用拷贝构造;
cout<<"hello"<<endl;
returnb;//调用拷贝构造返回值,使用b初始化
//return之后,需要析构a,析构b 返回一个对象
}
int _tmain(int argc, _TCHAR* argv[])
{
A a;
fun(a);
A b;//调用构造函数
b=a;//调用的是赋值函数
A c(b);
return0;
//return之后需要析构a 析构函数fun 返回的对象;
}
运行结果(加个断点在return 0 的下面一行):