NeuroWhAI의 잡블로그

[C++] ref-qualified member functions : 값의 종류에 따라 메소드 오버로딩하기 본문

개발 및 공부/언어

[C++] ref-qualified member functions : 값의 종류에 따라 메소드 오버로딩하기

NeuroWhAI 2019. 2. 22. 20:06


#include <iostream>

using namespace std;

class Foo
{
public:
    void bar() &
    {
        cout << "L" << endl;
    }
    
    void bar() &&
    {
        cout << "R" << endl;
    }
};

int main()
{
    Foo f;
    f.bar(); // L
    std::move(f).bar(); // R
    
    return 0;
}

결과 : https://ideone.com/OIMlRZ


Foo의 멤버함수 bar의 선언부를 보시면 '&'와 '&&'가 보이실겁니다.

이것이 'ref-qualified'이며 각각 lvalue일때, rvalue일때를 지정합니다.

딱 이것뿐이며 응용은 여러분 몫...


또한 '&&'로 되어있어도 그 안에서의 this는 lvalue이므로 주의하셔야 합니다.

('&&'인 메소드에서 다른 메소드를 호출하면 '&&'가 아니라 '&' 버전의 메소드가 호출됨)


참고 : https://en.cppreference.com/w/cpp/language/member_functions#const-.2C_volatile-.2C_and_ref-qualified_member_functions



Comments