오래된 스레드를 부활 시켰지만 아무도 ref 한정자에 의한 오버로딩을 언급하지 않았다는 것을 알 수 있습니다. Ref-qualifier는 C ++ 11에 추가 된 언어 기능이며 최근에야 우연히 발견했습니다. 예를 들어 cv-qualifiers처럼 널리 퍼져 있지는 않습니다. 주요 아이디어는 멤버 함수가 rvalue 객체에서 호출되는 경우와 lvalue 객체에서 호출되는 경우의 두 경우를 구분하는 것입니다. 기본적으로 다음과 같이 작성할 수 있습니다 (OP의 코드를 약간 수정하고 있습니다).
#include <stdio.h>
class My {
public:
int get(int) & {
printf("returning int..\n");
return 42;
}
char get(int) && {
printf("returning char..\n");
return 'x';
};
};
int main() {
My oh_my;
oh_my.get(13);
My().get(13);
}
이 코드는 다음 출력을 생성합니다.
returning int..
returning char..
물론 cv 한정자의 경우와 마찬가지로 두 함수 모두 동일한 유형을 반환 할 수 있으며 오버로딩은 여전히 성공적입니다.