#include <iostream>
class A{
public:
explicit A(int a, int b){ // explicit 禁止隐式转换
std::cout << a << " " << b << std::endl;
}
};
class B{
public:
explicit B(int i){
std::cout << i << std::endl;
}
private:
A a{1, 2}; // ok
// A a = {0, 0}; //报错。 A的构造函数加了explicit, 所以这里不能隐式转换
};
struct Pig{
std::string name{"hello"};
int age{12};
};
int main() {
// google c++11编码标准,无论何时,初始化都用{}, 不要用()。 此功能也属于c++11新增的初始化列表功能
B b{123};
//Pig pig("a", 1); // 报错
Pig pig{"张三", 20}; // ok。 不需要一个个去赋值了,非常方便
std::cout << pig.name << " " << pig.age << std::endl;
return 0;
}
打印结果:
1 2
123
张三 20
让火焰净化一切