Что означает «константный класс»?

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

const class A { }; 

Что означает "константный 9X_cpp класс"? Кажется, компилируется нормально.

42
0
5
Общее количество ответов: 5

Ответ #1

Ответ на вопрос: Что означает «константный класс»?

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

 const class A { public: int x, y; } anInstance = {3, 4}; // The above is equivalent to: const A anInstance = {3, 4}; 

53
3

  • 7.1.5.1/1: «Есть два cv-квалификатора, const и volatile. Если cv-qualifier появляе ...

Ответ #2

Ответ на вопрос: Что означает «константный класс»?

Что означает "константный класс"? Кажется, компилируется 9X_constant нормально.

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

Изменить: Да, VC++ молча 9X_cpp игнорирует константу, жалуется GCC.

36
1

  • Я собираюсь сказать, что это похоже на к ...

Ответ #3

Ответ на вопрос: Что означает «константный класс»?

Если бы у вас было это:

const class A { } a; 

Тогда это явно означало 9X_const бы, что 'a' - это константа. В противном 9X_c++ случае я думаю, что это скорее всего недопустимый 9X_c++ c ++.

22
0

Ответ #4

Ответ на вопрос: Что означает «константный класс»?

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

const // It is a const object... class nullptr_t { public: template operator T*() const // convertible to any type of null non-member pointer... { return 0; } template operator T C::*() const // or any type of null member pointer... { return 0; } private: void operator&() const; // Can't take address of nullptr } nullptr = {}; 

Промежуточная 9X_cxx реализация nullptr, если вы ждете C++ 0x.

10
0

Ответ #5

Ответ на вопрос: Что означает «константный класс»?

Попробуйте скомпилировать его с помощью 9X_non-const GCC, появится ошибка ниже:
error: qualifiers can only be specified for objects and functions.

Как видно из 9X_non-const ошибки, постоянными могут быть только объекты 9X_class (переменные, указатели, объекты классов 9X_constants и т. д.) и функции. Поэтому попробуйте сделать 9X_const объект постоянным, тогда он должен нормально 9X_constants компилироваться.
const class A {};
const A a ;

1
0