今天在看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(操作隐式转换)
本文探讨了C++中operator的两种用法:操作符重载和隐式类型转换。通过对比demo类中的两种operator函数,解释了如何使用operator实现重载隐式转换。
4271

被折叠的 条评论
为什么被折叠?



