sách gpt4 ăn đã đi

C++ nạp chồng các toán tử hai lần, một lần để trả về tham chiếu không phải là hằng và một lần để trả về tham chiếu const Tùy chọn là gì?

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 23:10:37 31 4
mua khóa gpt4 giày nike

我用相同的参数列表重载了一个运算符两次。但返回类型不同:

T& operator()(par_list){blablabla}    
const T& operator()(par_list){blablabla}

那么当我调用 () 运算符时,会根据什么偏好或情况调用哪个函数?我知道如果我在 const 函数下调用 () ,它必须是 const T& 。

我只是好奇 C++ 如何处理这种情况以及默认首选项如何工作。

Cảm ơn

câu trả lời hay nhất

这些函数不会互相重载;它们具有相同的签名,因此尝试重新定义相同的函数,这是一个错误。返回类型不是函数签名的一部分。要重载一个函数,您必须声明另一个具有相同名称但参数不同或 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

关于C++ 重载运算符两次,一次返回非 const 引用,另一次返回 const 引用,偏好是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12700682/

31 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress