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

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

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

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

classname (const classname &obj) {

   //构造函数的主体

}

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

classname Ob1, Ob2;

Ob2 = Ob1;

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

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

以上是 复制初始化和直接初始化在C ++之间有区别吗? 的全部内容, 来源链接: utcz.com/z/347361.html

回到顶部