Что происходит, когда вы делаете членскую функцию класса своим другом !?Создание функции-члена друга
Приведенный ниже код компилируется и запускается. Без объявления друга создается «слишком много аргументов для оператора» (и это правильно). Я понимаю, что делать это не имеет никакого смысла, но может ли кто-нибудь сказать мне, что здесь происходит? Помогает ли друг компилятору каким-то образом опустить параметр по умолчанию?
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, но это разрешено в C++ 0x. – 2010-12-06 05:07:44