以下代码
#include
using namespace std;
class num
{
public:
num(){n=1;cout<<"构造函数执行\n";}
num(int i){n=i;cout<<"带一个参数的构造函数执行\n";}
num(const num&s){this->n=s.n;cout<<"复制构造函数执行\n";}
~num(){cout<<"析构函数执行\n";}
int get()const{return n;}
void set(int x){n=x;}
void add(){++n;}
const num operator++(int o)
{
num temp(*this);
++n;
return temp;
}
private:
int n;
};
int main()
{
num i;
cout<<"i:"<<i.get()<<endl;
i.add();
cout<<"i:"<<i.get()<<endl;
num n=i++;
cout<<"i:"<<i.get()<<endl;
cout<<"n:"<<n.get()<<endl;
return 0;
}
运行后显示
构造函数执行
i:1
i:2
复制构造函数执行
复制构造函数执行
析构函数执行
i:3
n:2
析构函数执行
析构函数执行
请问为什么要执行两次复制构造函数 复制构造的都是什么?
还有请问依次析构的三个对象是什么?
谢谢!!