以下的程序代码,运行结果显示不理解啊,为什么是这样?
#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
为何是这样为何是这样为何是这样为何是这样 展开
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
为何是这样为何是这样为何是这样为何是这样 展开
1个回答
展开全部
rectangle()
{x=1000;cout<<"rectangle的默认构造函数!"<<x<<endl;}
因为 在实例化 rectangle 对象 a 的时候 他给X赋值
但是X 这时候并没有对象
所有它会自动调用 demo 的构造函数
{x=1000;cout<<"rectangle的默认构造函数!"<<x<<endl;}
因为 在实例化 rectangle 对象 a 的时候 他给X赋值
但是X 这时候并没有对象
所有它会自动调用 demo 的构造函数
追问
能留个QQ详细说下么,解决后给您100分
追答
初始化私有成员
demo length;
demo width;
调用两次demo构造
rectangle
一次构造
main函数返回
析构掉自己的所占资源
析构一次
当析构 成员时
碰到demo类对象
调用两次 demo析构
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询