40

经过一些查找和替换重构后,我最终得到了这个宝石:

const class A
{
};

“常量类”是什么意思?似乎编译正常。

4

5 回答 5

51

在那个例子中 是没有意义的,你的编译器应该给你一个错误,但是如果你用它在关闭和const之间声明该类的变量,那么将这些实例定义为,例如:};const


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

// The above is equivalent to:
const A anInstance = {3, 4};
于 2008-10-16T00:26:57.803 回答
35

“常量类”是什么意思?似乎编译正常。

对我来说不是。我认为您的编译器只是出于礼貌而忽略了它。

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

于 2008-10-16T00:26:15.293 回答
22

如果你有这个:

const class A
{
} a;

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

于 2008-10-16T00:25:37.650 回答
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 = {};

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

于 2009-10-24T04:25:37.247 回答
1

尝试用 GCC 编译它,它会给你以下错误:
error: qualifiers can only be specified for objects and functions.

从错误中可以看出,只有对象(变量、指​​针、类对象等)和函数可以是常量。因此,尝试将对象设为常量,然后它应该可以正常编译。
const class A {};
const A a ;

于 2018-04-24T11:03:27.873 回答