在 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中文网其他相关文章!