当我们用explicit关键字声明构造函数时,它将只能以直接初始化的形式使用。
#include <iostream>
using namespace std;
class Person
{
public:
explicit Person(int n) :age(n) { cout << "Person(int n)" << endl; }
private:
int age;
};
int main(void)
{
Person p = 3; //编译错误,person 构造函数为显示构造函数,不允许通过转换隐式调用
Person p(3); //正确,直接初始化
}