以下的程序代码,运行结果显示不理解啊,为什么是这样?

#include<iostream>usingnamespacestd;classdemo{public:demo(){x=0;cout<<"demo的默认构造函数!"<... #include <iostream>
using namespace std;
class demo
{
public:
demo()
{x=0;cout<<"demo的默认构造函数!"<<x<<endl;}
demo(int i)
{x=i;cout<<"demo的带一个参数的构造函数!"<<x<<endl;}
~demo()
{cout<<"demo的默认析构函数!"<<x<<endl;}
int get()
{return x;}
void set(int i)
{x=i;}
private:
int x;
};
class rectangle
{
public:
rectangle()
{x=1000;cout<<"rectangle的默认构造函数!"<<x<<endl;}
rectangle(int i,int j,int k): x(i),width(j),length(k)
{
cout<<"rectangle的带三个参数的构造函数!"<<"长方形b的面积为:" << length.get() *width.get()<<endl;
}
~rectangle()
{cout<<"rectangle的默认析构函数!"<<x<<endl;}
int area()
{return length.get()*width.get();}
private:
demo length;
demo width;
int x;
};
int main()
{
rectangle a;
return 0;
}

结果是:demo 默认构造函数 !0
demo 默认构造函数 !0
rectangle默认构造函数!1000
rectangle默认构造函数!1000
demo 默认析构函数 !0
demo 默认析构函数 !0
为何是这样为何是这样为何是这样为何是这样
展开
 我来答
恋爱玫瑰ing
2013-05-29 · 超过24用户采纳过TA的回答
知道答主
回答量:37
采纳率:0%
帮助的人:57.1万
展开全部
rectangle()
{x=1000;cout<<"rectangle的默认构造函数!"<<x<<endl;}
因为 在实例化 rectangle 对象 a 的时候 他给X赋值
但是X 这时候并没有对象
所有它会自动调用 demo 的构造函数
追问
能留个QQ详细说下么,解决后给您100分
追答
初始化私有成员
demo length;
demo width;
调用两次demo构造
rectangle
一次构造
main函数返回
析构掉自己的所占资源
析构一次

当析构 成员时

碰到demo类对象
调用两次 demo析构
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式