社区
C++ 语言
帖子详情
为什么C++中有复制构造函数?
dweqd
2012-03-17 02:06:13
为什么C++中有复制构造函数?
...全文
142
8
打赏
收藏
为什么C++中有复制构造函数?
为什么C++中有复制构造函数?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
深圳大哥
2012-03-19
打赏
举报
回复
http://www.cnblogs.com/BlueTzar/articles/1223313.html
Xomic
2012-03-19
打赏
举报
回复
为什么不能有复制构造函数?
深圳大哥
2012-03-19
打赏
举报
回复
看看这篇文章吧
http://www.cnblogs.com/chenyuming507950417/archive/2012/03/10/2389142.html
quwei197874
2012-03-19
打赏
举报
回复
主要是为了解决深拷贝问题
疼你
2012-03-19
打赏
举报
回复
我简单理解为用一个旧的对象初始一个新的对象时用到拷贝构造函数。。
teleinfor
2012-03-17
打赏
举报
回复
C++给你一个直接的机会对拷贝操作进行深入控制。应该说更加的灵活方便,同时用户层对操作的细节和实现目的也更加了解。1L的解释够全面了。
pathuang68
2012-03-17
打赏
举报
回复
其他的面向对象的语言,背后的做法也是这样的,只不过你没有像C++这样的机会直接使用或者修改它罢了。
面包大师
2012-03-17
打赏
举报
回复
拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。
1). 一个对象以值传递的方式传入函数体
2). 一个对象以值传递的方式从函数返回
3). 一个对象需要通过另外一个对象进行初始化
以上的情况需要拷贝构造函数的调用。如果在前两种情况不使用拷贝构造函数的时候,就会导致一个指针指向已经被删除的内存空间。对于第三种情况来说,初始化和赋值的不同含义是构造函数调用的原因。事实上,拷贝构造函数是由普通构造函数和赋值操作赋共同实现的。描述拷贝构造函数和赋值运算符的异同的参考资料有很多。
拷贝构造函数不可以改变它所引用的对象,其原因如下:当一个对象以传递值的方式传一个函数的时候,拷贝构造函数自动的被调用来生成函数中的对象。如果一个对象是被传入自己的拷贝构造函数,它的拷贝构造函数将会被调用来拷贝这个对象这样复制才可以传入它自己的拷贝构造函数,这会导致无限循环。
除了当对象传入函数的时候被隐式调用以外,拷贝构造函数在对象被函数返回的时候也同样的被调用。换句话说,你从函数返回得到的只是对象的一份拷贝。但是同样的,拷贝构造函数被正确的调用了,你不必担心。
如果在类中没有显式的声明一个拷贝构造函数,那么,编译器会私下里为你制定一个函数来进行对象之间的位拷贝(bitwise copy)。这个隐含的拷贝构造函数简单的关联了所有的类成员。许多作者都会提及这个默认的拷贝构造函数。注意到这个隐式的拷贝构造函数和显式声明的拷贝构造函数的不同在于对于成员的关联方式。显式声明的拷贝构造函数关联的只是被实例化的类成员的缺省构造函数除非另外一个构造函数在类初始化或者在构造列表的时候被调用。
拷贝构造函数是程序更加有效率,因为它不用再构造一个对象的时候改变构造函数的参数列表。设计拷贝构造函数是一个良好的风格,即使是编译系统提供的帮助你申请内存默认拷贝构造函数。事实上,默认拷贝构造函数可以应付许多情况。
问答题:什么叫做
复制
构造函数
?
复制
构造函数
何时被调用?
问答题:什么叫做
复制
构造函数
?
复制
构造函数
何时被调用?
C++
中的
复制
构造函数
目录普通变量的
复制
复制
构造函数
复制
构造函数
的三种调用 普通变量的
复制
有时我们会在定义一个变量的同时使用另一个变量来初始化它。 int a_variable=12; int new_variable(a_variable); 通过已有的同类型变量来初始化自身很有用。 对自定义类型的对象是否可以通过一个存在的对象方便的
复制
呢?
复制
构造函数
复制
构造函数
又叫做拷贝
构造函数
,它只有一个参数(既然需要
复制
,一个就够了,若传入两个相同对象则没有意义,若传入两个不同的对象,就没必要叫做
复制
构造函数
了),参数类型为本
c++
复制
构造函数
详解
基本概念
复制
构造函数
(Copy constructor)是
c++
中的一个特殊
构造函数
,也称拷贝
构造函数
,它只有一个参数,参数类型为同类对象的引用。 如果没有定义
复制
构造函数
,那么编译器将生成默认的
复制
构造函数
。默认的
复制
构造函数
完成
复制
的功能。
复制
构造函数
的参数为同类对象的引用,可以是常应用,也可以是非常引用。形如类名::类名(类名&)或类名::类名(const 类名&) 默认
复制
构造函数
class Complex {//复数类 public: double real, imag;
C++
——
构造函数
、析构函数以及
复制
构造函数
文章目录一、
构造函数
1.1
构造函数
是什么?1.2 为什么要有
构造函数
?1.3 如何使用
构造函数
?1.4
构造函数
的实现二、使用步骤 一、
构造函数
在程序执行的过程中,当遇到与对声明语句时,程序会向操作系统申请一定的内存空间用于存放新建的对象。但是与普通变量相比,类的对象特别复杂,编译器不知如何产生代码去初始化对象,这便引出了
构造函数
。 1.1
构造函数
是什么?
C++
中,
构造函数
是一种特殊的成员函数,在每次创建一个类的时候编译器都会默认调用
构造函数
进行初始化。 1.2 为什么要有
构造函数
?
构造函数
的作用
C++
编译器是否隐含生成默认
构造函数
和默认
复制
构造函数
的4种情况讨论
① 类内有自定义
构造函数
和自定义
复制
构造函数
根据
C++
标准定义,如果程序已定义
构造函数
,默认情况下编译器就不再隐含生成默认
构造函数
。注意,这里的“
构造函数
”包括
复制
构造函数
(因为
复制
构造函数
也是
构造函数
的一种)。 此时该类一共有2个
构造函数
:自定义
构造函数
和自定义
复制
构造函数
。 ② 类内有自定义
构造函数
,无任何
复制
构造函数
根据
C++
标准定义,有自定义
构造函数
,则无默认
构造函数
;无自...
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章