构造函数调用次数的问题

#include<iostream>usingnamespacestd;classA{public:A(){n=1;cout<<"build\n";}A(inti){n=... #include <iostream> using namespace std; class A { public: A(){n=1;cout<<"build\n";} A(int i){n=i;cout<<"build(n)\n";} ~A(){cout<<"delete\n";} A(const A&a){n=a.n;cout<<"copy"<<endl;} void set(int x){n=x;} int get()const{return n;} A operator++() { ++n; return *this; } private: int n; }; 主函数按以下两种方法写。(区别仅在b的定义) 第一种 int main() { A a; a.set(10); A b=++a; cout<<a.get()<<endl; cout<<b.get()<<endl; return 0; } 第二种 int main() { A a,b; a.set(10); b=++a; cout<<a.get()<<endl; cout<<b.get()<<endl; return 0; } 问题:为什么第一种只调用一次构造函数,而第二种调用两次构造函数呢? 请高手赐教。 展开
 我来答
小小小煟484
推荐于2016-02-28 · 超过70用户采纳过TA的回答
知道答主
回答量:123
采纳率:0%
帮助的人:129万
展开全部
第一种也调用了两次构造函数 只不过楼主的第一种写成了这样 A b=++a; 既然是 = ++a 则隐式调用的构造函数A(const A&a){n=a.n;cout<<"copy"<<endl;} 也就是说楼主的这句A b=++a; 显式构造方法为A b(++a); 所以第一种方法也是调用了两次构造函数 一次是默认构造函数 一次是楼主重载的构造函数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式