MyClass(const MyClass&x){cout<<2;}

求解一个简单的C++程序问题

2011-09-15 09:28 tan001228    分类:C/C++  |  浏览 218 次
当类中有多个构造函数时,建立对象时是不是都要调用如下面的程序
#include<iostream>
using namespace std;
class MyClass{
public:
MyClass(int i=0){cout<<1;}
MyClass(const MyClass&x){cout<<2;}
MyClass& operator=(const MyClass&x){cout<<3; return*this;}
~MyClass(){cout<<4;}
};
int main(){
MyClass obj1(1),obj2(2),obj3(obj1);
return 0:
}
其最后的输出结果是什么?MyClass(const MyClass&x){cout<<2;}这个构造函数什么时候调用的?
2011-09-15 10:06 提问者采纳
建立obj3的时候
因为 obj1已经存在的对象
用obj1对象 做参数 调用的构造函数 就是 它了MyClass(const MyClass&x){cout<<2;}

输出 112444

建立 obj1 时调用构造函数 MyClass(int i=0){cout<<1;} 输出1
建立 obj2 时调用构造函数 MyClass(int i=0){cout<<1;} 输出1
建立obj3 时调用构造函数MyClass(const MyClass&x){cout<<2;} 输出2
程序结束 调用析构函数 
析构函数 调用规则是 先建立的对象 后析构 ,后建立的对象先析构
所以
先调用 obj3 的析构函数输出4
然后 obj2 的析构函数输出4
最后obj1 的析构函数输出4
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值