c++中拷贝构造函数和赋值运算符有哪些不同

2021-02-26 17:06:00 字数 1346 阅读 2210

1楼:丿艾瑞灬莉娅

链接">网页链接

拷贝copy构造函数和赋值运算

bai符的行为比较du相似,都是将一个zhi对象的dao值复制给另一个对象;但是其结果却有些不同,拷贝构造函数使用传入对象的值生成一个新的对象的实例,而赋值运算符是将对象的值复制给一个已经存在的实例。这种区别从两者的名字也可以很轻易的分辨出来,拷贝构造函数也是一种构造函数,那么它的功能就是创建一个新的对象实例;赋值运算符是执行某种运算,将一个对象的值复制给另一个对象(已经存在的)。调用的是拷贝构造函数还是赋值运算符,主要是看是否有新的对象实例产生。

如果产生了新的对象实例,那调用的就是拷贝构造函数;如果没有,那就是对已有的对象赋值,调用的是赋值运算符。

调用拷贝构造函数主要有以下场景:

对象作为函数的参数,以值传递的方式传给函数。

对象作为函数的返回值,以值的方式从函数返回使用一个对象给另一个对象初始化

c++中拷贝构造函数和赋值运算符重载本质上一样么

2楼:匿名用户

本质不一样,语法上也不一样

他们的区别:

拷贝构造函数是在一堆原始的内存上建立起一个对象。

复制运算符重载是在已初始化的对象上进行复制。

3楼:千锋教育

复制构造函

数接受单个类类型引用形参,这个形参一般用const修饰。

class a

;一般的类,编专译器合成的构造函数就能完成属必要的工作。担当类有一个数据成员是指针,或者成员表示在构造函数中分配的其他资源;在创建新对象时必须做一些特定工作。这两种情况必须定义复制构造函数。

复制操作符重载,由operator后面跟所定义的操作符符号,通过定义名为operator=函数来对赋值进行定义。该操作符函数有两个形参:第一个形参对应左边的操作数(隐式绑定到this指针了),第二个形参对应右操作数。

返回类型应该与内置赋值运算返回的类型相同,内置类型的赋值运算返回对右操作数的引用,赋值操作符也返回对同一类型的引用。

class b

;可以使用合成复制构造函数的类通常也可以使用合成赋值操作符。一般来说,如果类需要复制构造函数,也就需要赋值操作符。

4楼:匿名用户

假设你有一个类a,和一个已有的类对象b时

当你执行a a=b来创建对象a时调用的是拷贝构造函数,当你执行a a;a=b时调用的是运算符重载就功能而言,感觉差别不大

5楼:叶片舟

形式上不一样,本质一样

都是为了防止,浅拷贝带来的错误

用的时机不懂

既然是构造函数,所以就是在初始化使用的, 重载赋值操作符就是赋值时用的

C语言中不同数据类型的数据在运算时采用的规则有哪些

1楼 匿名用户 不同数据类型之bai 间的转换 有du2种方式 隐式转换和显zhi式转换dao。 隐式转换指的是默 专认做的一些转换式,比如属整形和实型做混合运算 这里我说的运算是合法的运算,不会是取余这样对操作数有数据类型要求的运算 ,得到的结果是自动由精度低的或占位数低的数据类型向高的数据类型做...