После некоторого поиска и замены рефакторинга я оказался в этом камне:
const class A
{
};
Что означает "const class"? Кажется, что он скомпилирован.
Ответ 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.