“const class”是什么意思?

时间:2008-10-16 00:23:11

标签: c++ class const

在找到并替换重构后,我最终获得了这个宝石:

const class A
{
};

“const class”是什么意思?好像编译好了。

5 个答案:

答案 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 ;