复制构造函数.docVIP

  • 6
  • 0
  • 约1.06万字
  • 约 15页
  • 2017-05-16 发布于湖北
  • 举报
C++:为什么复制构造函数的参数一般是const型的? 因为复制构造函数是用引用方式传递复制对象,引用方式传递的是地址,因此在构造函数内对该引用的修改会影响源对象。而你在用对象a1构造a2时,自然不希望复制构造函数会改变a1的内容,因此要防止复制构造函数内部修改该引用,所以用const声明。 class A { int x; A(int c){x=c;}; A(const A c){x=c.x}; // 复制构造函数 } void main() { class A a1(10); class A a2(a1); // 在用a1构造a2的时候,你当然不希望a1会被改变。 } 复制控制 当定义一个新类型的时候,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么——这是通过定义特殊成员:复制构造函数、赋值操作符和析构函数来达到的。如果没有显式定义复制构造函数或赋值操作符,编译器(通常)会为我们定义。 复制构造函数是一种特殊构造函数,具有单个形参,该形参(常用 const 修饰)是对该类类型的引用。当定义一个新对象并用一个同类型的对象对它进行初始化时,将显式使用复制构造函数。当将该类型的对象传递给函数或函数返回该类型的对象时,将隐式使用复制构造函数。 不管类是否定义了自己的析构函数,编译器都自动执行类中非 static 数据成员的析构函数。 在下一章我们将进一步学习操

文档评论(0)

1亿VIP精品文档

相关文档