- 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 数据成员的析构函数。在下一章我们将进一步学习操
您可能关注的文档
最近下载
- 中复神鹰(上海)科技有限公司碳纤维航空应用研发及制造项目 环评报告书.pdf VIP
- HTY-DI1000C型总有机碳分析仪说明书C版(7).doc VIP
- 门式起重机安全操作规程及注意事项.docx VIP
- 物理-江苏省无锡市2025-2026学年度第一学期2026届高三年级期末.pdf VIP
- 广东省水功能区划.pdf VIP
- 文物保护项目计划书模板.docx VIP
- 景观艺术概论 第三章 景观生态保护--修复与再生.ppt VIP
- 2024年武汉市中考数学真题试卷及解析.docx VIP
- 舒尔特方格-专注力训练表3阶4阶5阶6阶7阶(已排版-可以直接打印).pdf VIP
- 03J502-2内装修吊顶图集标准.docx VIP
原创力文档

文档评论(0)