小编Mel*_*ato的帖子

指定构造函数时列表初始化的不同行为

我有这样的代码,例如:

class A {
public:
    int x;

    A() {
        std::cout << "Constructor Called !" << std::endl;
    }
    A(int y):x(y) {
        std::cout << "Constructor Param Called !" << std::endl;
    }

    A(const A& copy) {
        std::cout << "Copy Constructor Called !" << std::endl;
    }
}

class B {
public:
    A value;
    //B(const A& val) : value(val){}
}

int main(){
    B b { A(22)};
}
Run Code Online (Sandbox Code Playgroud)

如果我注释掉 B 构造函数,则输出只是“调用构造函数参数”,但如果我取消注释 B 构造函数,则输出将是“调用构造函数参数”和“调用复制构造函数”。我的问题:

  1. 如果我注释掉构造函数,为什么输出会不同?(我读过有关聚合类和聚合初始化的内容,是这样吗?)
  2. 聚合初始化直接初始化有什么区别?

c++ initialization c++17

2
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×1

c++17 ×1

initialization ×1