// c++,隐式转换,explicit关键字.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//explicit关键数放在构造函数前面可以有效禁止产生隐式转换
#include<iostream>
#include<string>
using namespace std;
class entity
{
private:
std::string m_name;
int m_age;
public:
explicit entity(const std::string &name)
:m_name(name), m_age(-1)
{
std::cout << m_name << std::endl;
}
//explicit entity(int age)关键字起到阻拦产生隐式转换,仅仅可以显式调用。
entity(int age)
:m_name("unkown"), m_age(age)
{
std::cout << m_age << std::endl;
}
};
void printentity(const entity& entity)
{
//
}
int main()
{
printentity(22);
//printentity(std::string ("cherno"));
printentity(entity("cherno"));
//entity a("cherno");
//entity a = entity("cherno");
entity("cherno");
//entity b(22);
//entity b = entity(22);
entity(22);
std::cin.get();
}
注释部分代码可以直接调用。