标题:复制构造函数怎么不调用
只看楼主
心痛
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2012-2-24
结帖率:100%
已结贴  问题点数:30 回复次数:5 
复制构造函数怎么不调用
如下面代码所示:
class A{
 public:
  A():num(0)
  {}
  A(int n):num(n)
  {std::cout << "A(int n)" << std::endl;
  }
  A(const A &a)
  {std::cout <<"copy" <<std::endl;
  this.num=a.num;
  return *this;
  }
  private:int num;
};

int main()
{A a=10;
}
输出结果为:A(int n)
为什么不调用复制构造函数呢,请高手指教?
但C++Primer中说,先调用A(int n)这个构造函数创建一个临时对象,再调用复制构造函数初始化a
搜索更多相关主题的帖子: class 函数 public 
2012-02-25 16:25
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
得分:7 

My life is brilliant
2012-02-25 16:46
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
得分:7 
对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A 产生四个缺省的函数,例如:

  A(void); // 缺省的无参数构造函数

  A(const A &a); // 缺省的拷贝构造函数

  ~A(void); // 缺省的析构函数

  A & operate =(const A &a); // 缺省的赋值函数

我到网上找到的,可以知道你的是调用的赋值函数。
不是复制构造函数


用心做一件事情就这么简单
2012-02-26 12:43
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
得分:7 
复制构造函数在用一个对象实例化另一个对象时调用。
2012-02-27 10:23
w378567402
Rank: 1
等 级:新手上路
帖 子:8
专家分:3
注 册:2008-3-11
得分:0 
编译器优化会把你这种形式优化成A a(10)
2012-03-03 02:09
飞扬_余
Rank: 2
等 级:论坛游民
帖 子:9
专家分:17
注 册:2011-12-15
得分:0 
学习了
2012-03-03 07:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-361624-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.268202 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved