导读 大家好,我是小科,我来为大家解答以上问题。拷贝构造函数是深拷贝还是浅拷贝,拷贝构造函数很多人还不知道,现在让我们一起来看看吧!1、...
大家好,我是小科,我来为大家解答以上问题。拷贝构造函数是深拷贝还是浅拷贝,拷贝构造函数很多人还不知道,现在让我们一起来看看吧!
1、拷贝构造函数,又称复制构造函数,由编译器调用来完成一些基于同一类的其他对象的构建及初始化。在一个对象以值传递的方式传入函数体时;一个对象以值传递的方式从函数返回时;一个对象用于给另外一个对象进行初始化(常称为赋值初始化)时被自动调用。
2、拷贝构造函数必须以引用的形式传递(参数为引用值)。当一个对象以传递值的方式传一个函数的时候,拷贝构造函数自动的被调用来生成函数中的对象。
3、如果一个对象是被传入自己的拷贝构造函数,它的拷贝构造函数将会被调用来拷贝这个对象这样复制才可以传入它自己的拷贝构造函数,这会导致无限循环直至栈溢出(Stack Overflow)。除了当对象传入函数的时候被隐式调用以外,拷贝构造函数在对象被函数返回的时候也同样的被调用。
4、扩展资料:
5、使用原则:
6、通常的原则是:对于凡是包含动态分配成员或包含指针成员的类都应该提供拷贝构造函数;在提供拷贝构造函数的同时,还应该考虑重载"="赋值操作符号。
7、拷贝构造函数的格式为:
8、类名(const 类名& 对象名); 拷贝构造函数的原型,参数是常量对象的引用。由于拷贝构造函数的目的是成员复制,不应修改原对象,所以建议使用const关键字。
9、参考资料来源:搜狗百科-拷贝构造函数
本文到此讲解完毕了,希望对大家有帮助。