class A
{
static const A a;
}
Почему мы можем это сделать, в то время как мы не можем сделать это без слова static?Почему мы можем объявить статический объект класса внутри одного класса?
class A
{
static const A a;
}
Почему мы можем это сделать, в то время как мы не можем сделать это без слова static?Почему мы можем объявить статический объект класса внутри одного класса?
A static
член имеет только одно значение; это по существу глобальная переменная, ограниченная объявлением класса.
Член, не являющийся static
, является значением, которое появляется в каждом экземпляре класса.
Не имеет смысла, чтобы класс непосредственно содержал себя, так как это потребляло бы бесконечное количество памяти.
Возможно, вам понадобится указатель.
Как вы думаете, что это будет делать? – SLaks
Я думаю, что можно даже сделать такое без ключевого слова 'static', если A - класс шаблона, предполагая, что нет бесконечной рекурсии. Что-то вроде 'template class A {A a;};', и со специализацией для нуля. Но не спрашивайте меня, кем бы вы хотели это сделать, или если для этого есть разумное использование, даже если это возможно ... –
Damon
@Damon: A имеет совершенно другой тип, чем A . Ваш образец может быть также написан как «класс A {B b;}; и, конечно же, это возможно в C++. –