수업의 멤버 기능을 자신의 친구로 만들면 어떻게됩니까?회원 기능을 친구로 만들기
아래의 코드는 컴파일되어 실행됩니다. 친구 선언없이 '연산자에 대한 인수가 너무 많습니다.'가 생성됩니다 (맞습니다). 이 일을하는 것이 의미가 없지만 누군가 여기서 일어나는 일을 말해 줄 수 있습니까? 친구는 어떤면에서이 매개 변수의 기본값을 생략하도록 컴파일러에 지시합니까?
당신이 클래스의 멤버 함수 자체의 친구를 할 때 어떻게됩니까class Test
{
public:
friend bool operator<(Test& lhs, Test& rhs)
{
return true;
}
};
int main(int c, char** argv)
{
Test test1;
Test test2;
return test1 < test2;
}
당신의 질문에 답하기 위해서 : 친구들은 C++ 03에서 befriending 클래스의 멤버가 될 수 없지만 C++ 0x에서는 허용됩니다. –
궁금한데, 회원 기능이 이미 완전한 액세스 권한을 갖고 있기 때문에 회원 기능을 자신의 친구로 허용하는 것이 가능한 점은 무엇입니까? – radman
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#77 또는 기록을 참조하십시오. 중첩 된 클래스는 C++ 0x 및 대부분의 C++ 03 컴파일러에서 중첩 클래스). –