Является ли следующее определение?Циклическая зависимость в списке инициализации конструктора
class A;
class B;
// define A, which takes B& in constructor
// define B, which takes A& in constructor
class C
{
A a;
B b;
public:
C() : a(b), b(a) { /* stuff with a and b */ }
}
Полный пример: ideone.com.
Это безопасно/четко определено, если конструкторы для A
и B
ничего не делают со ссылками, которые они получают?
Почему downvote? Дайте мне знать, как я могу улучшить этот вопрос. – Claudiu
Я не думаю, что компилятор позволяет вам выполнить 'a (b)', потому что когда 'a' инициализируется,' b' еще не инициализируется. – user3528438
@ user3528438: Он уверен, что пример ideone компилируется и запускается. Но это потому, что мне повезло или потому, что он хорошо определен в стандарте? – Claudiu