【求教】构造函数和析构函数
源程序:
头文件部分:
class CNum
{
public:
CNum();
CNum(int );
~CNum();
int get()const;
void set(int );
void add();
CNum operator++();
protected:
private:
int n;
};
CNum::CNum()
{
n=1;
cout<<"构造函数在执行..."<<endl;
}
CNum::CNum(int i)
{
n=i;
cout<<"带参数的构造函数在执行..."<<endl;
}
CNum::~CNum()
{
cout<<"析构函数在执行..."<<endl;
}
int CNum::get()const
{
return n;
}
void CNum::set(int x)
{
n=x;
}
void CNum::add()
{
++n;
}
CNum CNum::operator++()
{
++n;
return CNum(n);
}
源文件部分:
#include <iostream>
using namespace std;
#include "创建临时对象.h"
int main(void)
{
CNum a;
cout<<"a.n="<<a.get()<<endl;
a.add();
cout<<"a.n="<<a.get()<<endl;
++a;
cout<<"a.n="<<a.get()<<endl;
CNum b=a;
cout<<"b.n="<<b.get()<<endl;
return 0;
}
运行结果:
构造函数在执行...
a.n=1
a.n=2
带参数的构造函数在执行
析构函数在执行...
a.n=3
b.n=3
析构函数在执行...
析构函数在执行...
请按任意键继续. . .
问题:运行结果里面:因为CNum a,调用构造函数创建了对象a,所以第一句话是构造函数在执行
因为CNum b=a,调用有参数的构造函数创建了对象b,所以第四句带参数的构造函数在执行。
那后面三个析构函数是在什麽时候,析构了什麽?