9.类初探
9.1.为什么建议使用=defalut显示写出默认构造函数?
1 #include"pch.h" 2 #include <iostream> 3 #include <vector> 4 using namespace std; 5 6 class A 7 { 8 public: 9 A(int a) {} 10 }; 11 12 int main() 13 { 14 vector<A> obj; 15 obj.resize(1); 16 return 0; 17 }
上面这段代码编译报错:没有找到合适的默认构造函数。有很多场景可能没办法面面俱到,但是从这里可以看出一些端倪,如果很简单的一个操作(习惯)让你避免了上述的问题,你应该每次都设置默认构造函数!当一个定义一个不使用任何初始值的类类型的时候!
9.2.如果在私有作用域中没有为const或引用类型变量初始化,怎么在构造函数中做到这一点?
如果你在构造函数内部给他们赋值,显然是错误的,不能给引用或者const赋值!可以在初始化列表中完成初始化!
9.3.explicit作用?
在只有一个参数的构造函数中使用,抑制构造函数定义的隐式转换,explicit构造函数只能用于直接初始化,不允许使用拷贝初始化!