Что означает «константный класс»?
После некоторого рефакторинга поиска и замены 9X_cxx я получил этот гем:
const class A { };
Что означает "константный 9X_cpp класс"? Кажется, компилируется нормально.
Ответ #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};
- 7.1.5.1/1: «Есть два cv-квалификатора, const и volatile. Если cv-qualifier появляе ...
Ответ #2
Ответ на вопрос: Что означает «константный класс»?
Что означает "константный класс"? Кажется, компилируется 9X_constant нормально.
Не для меня. Я думаю, ваш компилятор 9X_const просто вежлив и игнорирует это.
Изменить: Да, VC++ молча 9X_cpp игнорирует константу, жалуется GCC.
- Я собираюсь сказать, что это похоже на к ...
Ответ #3
Ответ на вопрос: Что означает «константный класс»?
Если бы у вас было это:
const class A { } a;
Тогда это явно означало 9X_const бы, что 'a' - это константа. В противном 9X_c++ случае я думаю, что это скорее всего недопустимый 9X_c++ c ++.
Ответ #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.
Ответ #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 ;
-
16
-
11
-
7
-
5
-
3
-
4
-
2
-
1
-
4
-
2
-
9
-
5
-
4
-
5
-
1
-
2
-
14
-
3
-
2
-
23
-
9
-
4
-
4
-
9
-
5
-
8
-
2
-
4
-
6
-
3
-
6
-
9
-
4
-
11
-
5
-
7
-
5
-
15
-
6
-
21
-
4
-
11
-
4
-
11
-
3
-
10
-
8
-
5
-
7
-
7