在找到并替换重构后,我最终获得了这个宝石:
const class A
{
};
“const class”是什么意思?好像编译好了。
答案 0 :(得分:44)
const
在该示例中没有意义,并且您的编译器应该给您一个错误,但是如果您使用它来在结束}
和;
之间声明该类的变量,然后将这些实例定义为const
,例如:
const class A
{
public:
int x, y;
} anInstance = {3, 4};
// The above is equivalent to:
const A anInstance = {3, 4};
答案 1 :(得分:31)
“const class”是什么意思?好像编译好了。
不是我没有。我认为你的编译器只是礼貌而忽略它。
编辑:是的,VC ++默默地忽略了const,GCC抱怨。
答案 2 :(得分:18)
如果你有这个:
const class A
{
} a;
然后它显然意味着'a'是常量。否则,我认为这可能是无效的c ++。
答案 3 :(得分:9)
除非您之后声明该类的实例,否则它是没有意义的,例如:
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 = {};
如果您正在等待C ++ 0x,则为临时nullptr
实现。
答案 4 :(得分:1)
尝试使用GCC进行编译,它会给出以下错误:
error: qualifiers can only be specified for objects and functions.
从错误中可以看出,只有对象(变量,指针,类对象等)和函数可以是常量。因此,尝试将对象设为常量,然后编译就好了
const class A {};
const A a ;