Подтвердить что ты не робот

Что означает "const class"?

После некоторого поиска и замены рефакторинга я оказался в этом камне:

const class A
{
};

Что означает "const class"? Кажется, что он скомпилирован.

4b9b3361

Ответ 1

Что означает "const class"? Кажется, что он скомпилирован.

Не для меня это не так. Я думаю, что ваш компилятор просто вежлив и игнорирует его.

Изменить: Да, VС++ молча игнорирует const, GCC жалуется.

Ответ 2

В этом примере const не имеет смысла, и ваш компилятор должен дать вам ошибку, но если вы используете его для объявления переменных этого класса между закрывающими } и ;, то это определяет эти экземпляры как const, например:


const class A
{
public:
    int x, y;
}  anInstance = {3, 4};

// The above is equivalent to:
const A anInstance = {3, 4};

Ответ 3

Если у вас есть это:

const class A
{
} a;

Тогда это явно означало бы, что 'a' является const. В противном случае, я думаю, что это скорее всего недействительный С++.

Ответ 4

Это бессмысленно, если вы не объявите экземпляр класса после этого, например, этот пример:

const // It is a const object...
class nullptr_t 
{
  public:
    template<class T>
      operator T*() const // convertible to any type of null non-member pointer...
    { return 0; }

    template<class C, class T>
    operator T C::*() const   // or any type of null member pointer...
    { return 0; }

  private:
    void operator&() const;  // Can't take address of nullptr

} nullptr = {};

Временная реализация nullptr, если вы ожидаете С++ 0x.