C++中赋值运算符和拷贝构造函数的区别是什么?


拷贝构造函数和赋值运算符都用于将一个对象初始化为另一个对象。它们的主要区别在于,拷贝构造函数为新对象创建了一个单独的内存块。但赋值运算符不会创建新的内存空间。它使用引用变量指向之前的内存块。

拷贝构造函数 (语法)

classname (const classname &obj) {
   // body of constructor
}

赋值运算符 (语法)

classname Ob1, Ob2;
Ob2 = Ob1;

让我们看看拷贝构造函数和赋值运算符之间的详细区别。


拷贝构造函数
赋值运算符
拷贝构造函数基本上是一个重载的构造函数
赋值运算符就是一个运算符。
这将使用已存在的对象初始化新对象。
这将一个已存在的对象的值赋给另一个已存在的对象。
当使用某个已存在的对象创建新对象时,使用拷贝构造函数。
当我们想将已存在的对象赋给新对象时,使用此运算符。
这两个对象使用单独的内存位置。
使用一个内存位置,但不同的引用变量指向同一位置。
如果类中没有定义拷贝构造函数,编译器将提供一个。
如果没有重载赋值运算符,则将进行按位复制。

 

 

更新于:2019年7月30日

607 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告