Это юридический синтаксис. X имеет собственное определение. Ситуация, при которой вы можете объект ссылаться на сам по себе круговыми связные списки, вдоль линий:
struct Node {
Node(Node *pNext_) : pNext(pNext_) {
}
// ...
Node *pNext;
};
Node empty(&empty };
Этот пустой список состоит из фиктивного узла, который имеет ссылку на себя. Это хорошо определено и полезно. Обратите внимание, что мы берем адрес пустой, который является законным, даже если Node является не-POD и еще не сконструирован. Я не думаю, что предоставление задания, как в вашем примере int m = m = 3;
, прямо полезно, но язык не позволяет моему, а не разрешать ваши.
Чтобы увидеть, как это переносится на конструкторы членов, считает:
struct A {
Node list;
A() : list(&list) {}
}
После того, как имя находится в области видимости, что позволяет присваивание и от этого становится возможным тоже.
Вы понимаете, что 'y = A()' вызывает 'operator =' для uninitializated variable? –
@ R.MartinhoFernandes no. Ухаживать за расширением? –
Я не понимаю, где вы говорите, я уменьшил это (пример) до (совершенно другой пример). –