После некоторого поиска и замены рефакторинга я оказался в этом камне:
const class A
{
};
Что означает "const class"? Кажется, что он скомпилирован.
После некоторого поиска и замены рефакторинга я оказался в этом камне:
const class A
{
};
Что означает "const class"? Кажется, что он скомпилирован.
Что означает "const class"? Кажется, что он скомпилирован.
Не для меня это не так. Я думаю, что ваш компилятор просто вежлив и игнорирует его.
Изменить: Да, VС++ молча игнорирует const, GCC жалуется.
В этом примере const
не имеет смысла, и ваш компилятор должен дать вам ошибку, но если вы используете его для объявления переменных этого класса между закрывающими }
и ;
, то это определяет эти экземпляры как const
, например:
const class A
{
public:
int x, y;
} anInstance = {3, 4};
// The above is equivalent to:
const A anInstance = {3, 4};
Если у вас есть это:
const class A
{
} a;
Тогда это явно означало бы, что 'a' является const. В противном случае, я думаю, что это скорее всего недействительный С++.
Это бессмысленно, если вы не объявите экземпляр класса после этого, например, этот пример:
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.