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

smallear1231 2013-03-28 11:08:59
源程序:
头文件部分:
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,所以第四句带参数的构造函数在执行。
那后面三个析构函数是在什麽时候,析构了什麽?
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
starytx 2013-03-28
  • 打赏
  • 举报
回复
引用 2 楼 smallear1231 的回复:
引用 1 楼 starytx 的回复:
程序执行出对象生存范围后自动执行析构函数
我想知道析构函数在什麽时候析构了什麽,也就是具体析构的对象和析构顺序
你可以在类中加一个成员变量,比如int n,然后给不同的对象的n赋上不同的值,在类析构中把这个n输出打印一下不就知道哪个对象以及析构顺序了
smallear1231 2013-03-28
  • 打赏
  • 举报
回复
引用 1 楼 starytx 的回复:
程序执行出对象生存范围后自动执行析构函数
我想知道析构函数在什麽时候析构了什麽,也就是具体析构的对象和析构顺序
starytx 2013-03-28
  • 打赏
  • 举报
回复
程序执行出对象生存范围后自动执行析构函数

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧