"const class"是什么意思?

180*_*ION 34 c++ const class

在找到并替换重构之后,我最终得到了这个gem:

const class A
{
};
Run Code Online (Sandbox Code Playgroud)

"const class"是什么意思?好像编译好了.

Ada*_*eld 45

const是在例如意义的,你的编译器应该给你一个错误,但如果你用它来宣告闭幕之间的类的变量};,然后定义这些实例作为const,例如:


const class A
{
public:
    int x, y;
}  anInstance = {3, 4};

// The above is equivalent to:
const A anInstance = {3, 4};
Run Code Online (Sandbox Code Playgroud)

  • 7.1.5.1/1:"有两个cv限定符,const和volatile.如果cv-qualifier出现在decl-specifier-seq中,则声明的init-declarator-list不应为空." (6认同)
  • 这是一个错误,因为存储类说明符仅在您具有声明符时才适用,并且在此示例中没有声明符. (3认同)
  • 我找不到使这个错误成为理由的理由.编译器可以随意发出警告,但只有标准才能确定什么算错误. (2认同)

小智 31

"const class"是什么意思?好像编译好了.

不适合我,它没有.我认为你的编译器只是礼貌而忽略它.

编辑:是的,VC++默默地忽略了const,GCC抱怨道.

  • 我要说它看起来像VC++出错的边缘情况 (3认同)

Eva*_*ran 19

如果你有这个:

const class A
{
} a;
Run Code Online (Sandbox Code Playgroud)

那么它显然意味着'a'是常数.否则,我认为这可能是无效的c ++.


Mat*_*ner 10

除非您之后声明该类的实例,否则它是没有意义的,例如:

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 = {};
Run Code Online (Sandbox Code Playgroud)

nullptr如果您正在等待C++ 0x,则为临时实现.