C++不同的变量初始化
C++ different variable initalization
那么int a = 10;
和int a(10);
之间的主要区别是什么?是否有一些性能变化,或类似的东西?
我很确定这有欺骗,但我现在找不到任何欺骗,所以这里有一个答案:
那么int
a = 10;
和int a(10);
之间的主要区别是什么?
第一个是复制初始化,第二个是直接初始化。它们都会产生值为 10 的 int。
是否有一些性能变化,或类似的东西?
对于像int
这样的原语:没有。对于类/结构可能有。复制初始化将调用类的复制构造函数,这可能会做一些工作。例如,std::vector
的复制构造函数将复制向量的每个元素,这可能会变得昂贵
std::vector<int> a{ 1, 2, 3 };
std::vector<int> b = a;
std::cout << a.size() << "/" << b.size(); // will print 3/3
在某些情况下,会发生复制省略,因此
std::vector<int> c = std::vector<int>();
不会调用复制构造函数。
有关初始化的(更多(更多信息,请参见此处。
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持