首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【求教】构造函数跟析构函数

2013-04-02 
【求教】构造函数和析构函数源程序:头文件部分:class CNum{public:CNum()CNum(int )~CNum()int get()cons

【求教】构造函数和析构函数
源程序:
头文件部分:
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,所以第四句带参数的构造函数在执行。
那后面三个析构函数是在什麽时候,析构了什麽? 我想知道析构函数在什麽时候析构了什麽,也就是具体析构的对象和析构顺序你可以在类中加一个成员变量,比如int n,然后给不同的对象的n赋上不同的值,在类析构中把这个n输出打印一下不就知道哪个对象以及析构顺序了

热点排行