explicit 关键字
- 作用是表明该构造函数是显示的, 而非隐式的.不能进行隐式转换!
- 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
#include <iostream>
#include <string>
using namespace std;
class student {
public:
//构造函数只能显示构造
explicit student(int _age) {
age = _age;
cout << "age=" << age << endl;
}
//构造函数可以显示, 也可以隐式构造
student(int _age, const string _name) {
age = _age;
name = _name;
cout << "age=" << age << "; name=" << name << endl;
}
~student() {}
int getAge() {return age;}
string getName() {return name;}
private:
int age;
string name;
};
int main(void) {
student xiaoM(18); //显示构造
student xiaoW = 18; //隐式构造
//student xiaoHua(19, "小花"); //显示构造
//student xiaoMei = { 18, "小美" }; //隐式构造 初始化参数列表,C++11 前编译不能通过,C++11新增特性
system("pause");
return 0;
}