我用相同的参数列表重载了一个运算符两次。但返回类型不同:
T& operator()(par_list){blablabla}
const T& operator()(par_list){blablabla}
那么当我调用 () 运算符时,会根据什么偏好或情况调用哪个函数?我知道如果我在 const 函数下调用 () ,它必须是 const T& 。
我只是好奇 C++ 如何处理这种情况以及默认首选项如何工作。
Cảm ơn
这些函数不会互相重载;它们具有相同的签名,因此尝试重新定义相同的函数,这是一个错误。返回类型不是函数签名的一部分。要重载一个函数,您必须声明另一个具有相同名称但参数不同或 hằng số
/bay hơi
限定符的函数 - 即函数上的限定符,而不是返回输入。
(它们也不会相互覆盖;覆盖是派生类对其基类的虚函数所做的事情)。
定义成员函数的hằng số
和非hằng số
重载是很常见的; hằng số
重载必须声明函数 hằng số
,而不仅仅是返回类型:
T& operator()(par_list){blablabla}
const T& operator()(par_list) const {blablabla}
^^^^^
现在,如果您将 ()
应用于非 hằng số
对象,则会调用第一个,而将第二个应用于 hằng số
对象。例如:
Thingy nc;
Thingy const c;
nc(); // calls the first (non-const) overload
c(); // calls the second (const) overload
Tôi là một lập trình viên xuất sắc, rất giỏi!