比如 int operator()
vs operator int()
,这两者有什么区别?
int operator()
是函数调用运算符(Function Call Operator),比如,
struct Foo
{
int operator()(int a, int b)
{
return a + b;
}
};
...
Foo foo;
int i = foo(1, 2); // Call the object as a function, and it returns 3 (1+2)
operator int()
是类型转换运算符(Type Conversion Operator),比如,
struct Bar
{
operator int()
{
return 123;
}
};
...
Bar bar;
int i = bar; // Calls the conversion operator, which returns 123