实例概要
介绍关键字explicit的作用
实例代码
#include <iostream>
#include <string>
class Person
{
public:
/*explicit*/ Person(int age)
{
m_age = age;
}
int getAge()
{
return m_age;
}
private:
int m_age;
};
int main(int argc, char** argv)
{
Person a = 3; //如果给构造函数Person(int age)前用explicit修饰,则编译错误
std::cout << "雇员年龄是" << a.getAge() << "岁" << std::endl;
return 0;
}
运行结果
/*explicit*/ Person(int age)
时:
雇员年龄是3岁
explicit Person(int age)
时,编译错误:
实例解释
- explicit
explicit
的作用是阻止编译器做隐式转换。主要是针对只有一个参数的构造函数。
如实例中Person a = 3;
,如果没有explicit
编译器会自动调用Person(int age)
构造函数,也就是隐式地将int
类型转换成了Person
类型;加上explicit
后编译器就不会这么做了,因此会出现编译错误。