C++ 中复制初始化和直接初始化之间有区别吗?


复制初始化可以通过复制构造函数的概念来完成。众所周知,构造函数用于初始化对象。我们可以创建自己的复制构造函数来复制其他对象,或者换句话说,用另一个对象的值初始化当前对象。另一方面,直接初始化可以通过赋值操作来完成。

这两种初始化类型的主要区别在于,复制初始化为新对象创建了一个单独的内存块。但是,直接初始化不会创建新的内存空间。它使用引用变量指向以前的内存块。

复制构造函数或复制初始化(语法)

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

直接初始化或赋值运算符(语法)

classname Ob1, Ob2;
Ob2 = Ob1;

让我们看看复制初始化和直接初始化之间的详细区别。

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

更新于:2019-07-30

2K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告