请各位帮我看下下面的程序,怎么运行的啊
#include <iostream>using namespace std;
class num
{
public:
num(){n=1;cout<<"构造函数执行"<<endl;}
num (const num &s){this->n=s.n;cout<<"复制构造函数执行"<<endl;}
num(int i){n=i;cout<<"构造函数执行"<<endl;}
~num(){cout<<"析构函数执行"<<endl;}
int get()const {return n;}
void set(int x){n=x;}
void add(){n++;}
const num &operator++(){++n;return *this;}
const num operator++(int o){num temp(*this);++n;return temp;}
private:
int n;
};
int main()
{
num i;
cout<<"i:"<<i.get()<<endl;
num x=++i;
cout<<"x:"<<x.get()<<endl;
cout<<"i:"<<i.get()<<endl;
x=i++;
cout<<"x:"<<x.get()<<endl;
cout<<"i:"<<i.get()<<endl;
return 0;
}
运行结果:
构造函数执行
i:1
复制构造函数执行 //为什么这里还要执行一次复制构造函数,上面返回的不是别名来初始化对象x的吗
x:2
i:2
复制构造函数执行
复制构造函数执行
析构函数执行
析构函数执行
x:2
i:3
析构函数执行
析构函数执行