C에서 멤버 함수를 선언할 때 매개변수 목록 뒤에 & 및 && 기호를 사용할 수 있습니다. 참조 한정자라고 하는 이러한 기호는 암시적 개체 매개 변수의 참조 유형을 나타냅니다.
단일 앰퍼샌드(&)는 멤버 함수가 호출됨을 나타냅니다. 객체가 lvalue 참조인 경우. lvalue 참조는 특정 메모리 위치에 저장된 기존 개체를 참조합니다. 다음 코드 조각은 그 사용법을 보여줍니다.
class wrap { public: operator obj() const & { ... } operator obj() && { ... } private: obj data_; };
객체가 lvalue 참조일 때 & ref 한정자가 있는 연산자 obj() 함수가 호출됩니다. 즉, lvalue 및 rvalue 표현식을 모두 사용하여 호출할 수 있습니다.
ref 한정자가 없으면 암시적 개체 매개변수가 lvalue 참조로 처리됩니다. 이를 통해 lvalue 및 rvalue 표현식 모두를 사용하여 멤버 함수를 호출할 수 있습니다. 아래 코드는 이 동작을 보여줍니다.
struct foo { void bar() {} }; int main() { foo().bar(); // (always fine) foo f; f.bar(); // (always fine) }
&& ref 한정자는 개체가 rvalue 참조일 때 멤버 함수가 호출된다는 것을 나타냅니다. rvalue 참조는 특정 메모리 위치에 바인딩할 수 없는 임시 또는 표현식 평가 개체를 나타냅니다.
다음 표에는 단일 앰퍼샌드(&)와 앰퍼샌드(&) 간의 차이점이 요약되어 있습니다. 앰퍼샌드 없음:
Ref-Qualifier | Reference Type | Can be Invoked With |
---|---|---|
& | lvalue reference | lvalue and rvalue expressions |
None | lvalue reference | lvalue and rvalue expressions |
이러한 참조 한정자를 이해하는 것은 멤버 함수를 올바르게 구현하고 다음을 기반으로 해당 동작을 조정하는 데 중요합니다. 맥락.
위 내용은 C 멤버 함수: 매개변수 목록에서 `&`와 `&&`는 무엇을 의미하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!