有什么区别?
例如:int operator()
vs operator int()
我正在寻找“官方”C ++文档的答案。
答案 0 :(得分:2)
第一个(int operator()
)是函数调用操作符,它将对象转换为可以像函数一样调用的函数对象。此特定运算符返回int
,缺少参数部分。
示例:
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()
)是转换运算符。这个特定的允许对象隐式地(或显式地,如果声明explicit
)转换为int
。 必须返回int
(或者使用任何类型,也可以使用用户定义的类型,如类或结构)。
示例:
struct Bar
{
operator int()
{
return 123;
}
};
...
Bar bar;
int i = bar; // Calls the conversion operator, which returns 123
转换运算符与单参数构造函数相反。
答案 1 :(得分:0)
有很大的不同。
T operator()
是一个呼叫运营商,因此您可以像这样“呼叫”您的课程:
class stuff {
// init etc
int operator()() {
return 5;
}
};
auto A = stuff(); // init that
cout << A() << endl; // call the object
operator T()
用于将类的对象转换为T
类型,因此您可以执行此操作:
class stuff {
operator int() {
return 5;
}
};
auto A = stuff();
cout << int(A) << endl;
转化可以是严格的explicit
,也可以是明确的或隐含的,如上所述。