c++ - 使用聚合初始化列表优于构造函数的优势?

标签 c++ constructor aggregate

我是 C++ 的新手,我有一个问题...

我尝试通过制作测试应用程序自己回答这个问题...在调试中,B 类初始化生成的汇编代码较少,但在 Release模式中,我真的不能说...它优化了初始化:(

假设我有两个类:

class A
{
public:
    int a, b, c, d;

    A(int _a, int _b, int _c, int _d) : a(_a), b(_b), c(_c), d(_d)
    {
    }
};

class B
{
public:
    int a, b, c, d;
};

使用有什么好处

B b = {1, 2, 3, 4}

代替

A a = A(1, 2, 3, 4);

?

最佳答案

对于全局对象和静态类成员,初始化列表不会在运行时调用任何代码。 (初始化数据直接存储在二进制文件中)。

如果您正在初始化大量对象,或者如果构造函数代码昂贵/庞大,这可能会在加载时产生显着差异。

如前所述,这仅适用于普通旧数据,即可以使用 C++ < 0x 中的初始化列表初始化的所有内容

关于c++ - 使用聚合初始化列表优于构造函数的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902077/

相关文章:

java - 为什么我的 public void Constructor {} 不能编译?

c++ - 聚合引用成员和临时生命周期

elasticsearch - ElasticSearch聚合:基于匹配项减去聚合

php - 寻找在 Cron 上构建提要阅读器/聚合器的最佳实践

c++ - 将 ASCII 字符串转换为十进制和十六进制表示形式

java - 如何拒绝Java构造函数中的不合格参数?

c++ - C++11 lambda 可以捕获文件范围变量吗?

Java - 给空对象的字段一个值或声明没有构造函数的对象不为空

c++ - C++ 程序的异常/错误行为

c++ - 如何为其构造函数采用右值的类声明变量?