今天在看effective c++的时候,看到了一个奇怪的用法
operator FontHandle()const{
return f;
}
这一下把我整懵了,在我的脑子里operator只能用于操作符重载啊,乍一看还以为是重载(),仔细一看,这函数没有返回值类型,而且只有一个括号,然后写了两个demo对比了一下。
class demo {
public:
demo(int a) :a(a) {}
operator int()const {
return a;
}
int operator()()const
{
return a;
}
private:
int a;
};
int main() {
demo d(3);
std::cout << d << std::endl; //3
std::cout << d() << std::endl; //3
}
通过两个对比发现,前面这个好像是隐式类型转换的效果。
问了问度娘
operator有两种用法
- 一种是operator overloading(操作符重载)
- 一种是operator casting(操作隐式转换)