Воображаемые друзья в С++

c++

Сейчас приходится погружаться во внутренности С++ и я с удивлением (на самом деле, благодаря случайной ошибке) обнаружил, что в С++ у классов могут быть воображаемые друзья (это определенно язык, который создан мной :DDD).

То есть код

#include <iostream>

class Foo {
    friend class Bar;

public:
    void exec() {
        std::cout << "Exec foo object method\n"; 
    }
};

int main() {
    Foo foo;

    foo.exec();

    return 0;
}

Вполне успешно компилируется и работает.

В первый момент мое удивление было непередаваемо. Класса Bar просто не существует, то есть у Foo появился воображаемый друг? Немного покурив маны, я понял, что обьявление класса дружественным влияет на класс, который обьявлен дружественным, а не на класс, который обьявил его другом. Возможно, достаточно тривиальная вещь, но мне такое поведение показалось достаточно забавным.

Previous Post Next Post