首页 >后端开发 >C++ >C 成员函数:参数列表中的'&”和'&&”意味着什么?

C 成员函数:参数列表中的'&”和'&&”意味着什么?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-12 17:15:12577浏览

C   Member Functions: What Do `&` and `&&` Mean in Parameter Lists?

成员函数参数列表:揭开 & 符号

在 C 中声明成员函数时,可能会遇到在参数列表后面使用 & 和 && 符号。这些符号称为引用限定符,指示隐式对象参数的引用类型。

单个与号 (&)

单个与号 (&) 表示将调用成员函数当对象是左值引用时。左值引用是指存储在特定内存位置的现有对象。以下代码片段演示了其用法:

class wrap {
public:
   operator obj() const & { ... }
   operator obj() && { ... }
private:
   obj data_;
};

当对象是左值引用时,将调用带有 & ref 限定符的运算符 obj() 函数。这意味着可以使用左值和右值表达式来调用它。

无与号

如果没有引用限定符,则隐式对象参数将被视为左值引用。这允许使用左值和右值表达式调用成员函数。下面的代码展示了这种行为:

struct foo
{
    void bar() {}
};

int main()
{
    foo().bar(); // (always fine)
    foo f;
    f.bar();      // (always fine)
}

右值引用 (&&)

&& 引用限定符指示当对象是右值引用时将调用成员函数。右值引用是指无法绑定到特定内存位置的临时或表达式求值对象。

主要差异

下表总结了单个与号 (&) 和没有&符号:

Ref-Qualifier Reference Type Can be Invoked With
& lvalue reference lvalue and rvalue expressions
None lvalue reference lvalue and rvalue expressions

理解这些引用限定符对于正确实现成员函数并根据其定制行为至关重要关于上下文。

以上是C 成员函数:参数列表中的'&”和'&&”意味着什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn