知识点
explicit
用来声明类构造函数的显示调用,当然这个作用是针对单参数构造函数。
示例
#include <iostream>
class ExplicitTest {
public:
// 无参构造函数不能隐式调用
ExplicitTest() {
std::cout << "这是无参构造函数" << std::endl;
}
explicit ExplicitTest(int num) {
std::cout << "这是int参数构造函数" << num << std::endl;
}
explicit ExplicitTest(char *str) {
std::cout << "这是char参数构造函数" << str << std::endl;
}
// 多参数构造函数不能隐式调用
ExplicitTest(int num, char *str) {
std::cout << "这是多参数构造函数" << num << str << std::endl;
}
};
int main(int argc, char *argv[]) {
ExplicitTest explicitTest1(5);
// ExplicitTest explicitTest2 = 5; 有explicit关键字无法隐式调用
ExplicitTest explicitTest3("hello world");
// ExplicitTest explicitTest4 = "hello world"; 有explicit关键字无法隐式调用
return 0;
}