2011-12-28 5 views
0
class A 
{ 
    static const A a; 
} 

Почему мы можем это сделать, в то время как мы не можем сделать это без слова static?Почему мы можем объявить статический объект класса внутри одного класса?

+0

Как вы думаете, что это будет делать? – SLaks

+0

Я думаю, что можно даже сделать такое без ключевого слова 'static', если A - класс шаблона, предполагая, что нет бесконечной рекурсии. Что-то вроде 'template class A {A a;};', и со специализацией для нуля. Но не спрашивайте меня, кем бы вы хотели это сделать, или если для этого есть разумное использование, даже если это возможно ... – Damon

+1

@Damon: A имеет совершенно другой тип, чем A . Ваш образец может быть также написан как «класс A {B b;}; и, конечно же, это возможно в C++. –

ответ

4

A static член имеет только одно значение; это по существу глобальная переменная, ограниченная объявлением класса.

Член, не являющийся static, является значением, которое появляется в каждом экземпляре класса.
Не имеет смысла, чтобы класс непосредственно содержал себя, так как это потребляло бы бесконечное количество памяти.

Возможно, вам понадобится указатель.

Смежные вопросы