Можно ли объявить конструктор класса другом? Думаю, этого не может быть. Но я где-то читал, что это может быть, но я не мог этого сделать. Если да, вы можете указать примерный код.
Может ли функция конструктора быть другом в С++?
Ответ 1
Да, он может:
class Y
{
public:
Y();
};
class X
{
private:
void foo() {}
friend Y::Y();
};
Y::Y()
{
X x; x.foo();
}
Как 11.3 Друзья [class.friend]
5) Когда декларация друга относится к перегруженному имени или оператору, только функция, заданная типами параметров, становится другом. член-функция класса X может быть другом класса Y.
[Пример:
class Y {
friend char* X::foo(int);
friend X::X(char); // constructors can be friends
friend X::~X(); // destructors can be friends
};
-end пример]
(акцент мой)