注册 登录
编程论坛 C++教室

复制构造函数怎么不调用

心痛 发布于 2012-02-25 16:25, 651 次点击
如下面代码所示:
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
5 回复
#2
lz10919149992012-02-25 16:46
#3
小鱼儿c2012-02-26 12:43
对于任意一个类A,如果不想编写上述函数,C++编译器将自动为A 产生四个缺省的函数,例如:

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

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

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

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

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

#4
lucky5635912012-02-27 10:23
复制构造函数在用一个对象实例化另一个对象时调用。
#5
w3785674022012-03-03 02:09
编译器优化会把你这种形式优化成A a(10)
#6
飞扬_余2012-03-03 07:50
学习了
1