c++ - 原始(标量)类型的差异复制初始化和直接初始化

标签 c++ initialization copy-initialization

<分区>

据我所知在C++中是一个初始化的形式

T x = a;

调用了复制初始化和表单中的初始化

T x(a);

T x{a};

称为直接初始化

(T...类型, x...变量名, a...表达式)

对于类类型,我认为区别很明显(在复制初始化的情况下调用复制构造函数)。

但是如果使用像 int 这样的原始(标量)类型呢?因为 int 类型没有(复制)构造函数,在

的情况下应该调用哪个构造函数
int x = 5; // copy-initialization

那有区别吗?

int x = 5; // copy-initialization of variable x
int x = {5}; // copy-initialization of variable x
int x(5); // direct-initialization of variable x
int x{5}; // direct-initialization of variable x

这里到底发生了什么?或者如果涉及原始/标量类型并且所有都是语法糖,则没有区别。类似的问题并不能完全为我解释。

最佳答案

像这样的原始标量没有区别;内存位置或寄存器(取决于用途)将以相同的方式初始化。

关于c++ - 原始(标量)类型的差异复制初始化和直接初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57771673/

相关文章:

c++ - 类模板特化内部的静态成员函数

c++ - C++ 中的实函数实现和运算符重载

java - Java 枚举中的静态(和最终)字段初始化

java - 静态类什么时候初始化?

c++ - 复制初始化 - 从 'int' 到非标量类型的转换

c++ - 为什么我不能从字符串复制初始化字符串流?

c++ - 这不是复制初始化,是吗?

c++ - Const temporary from template type 以及为什么使用 std::add_const?

c++ - 在字符串到 int 转换中使用 atoi 时出错

unit-testing - init() 函数能否安全地启动 go 例程,包括 along 测试?