【发布时间】:2008-10-16 00:23:11
【问题描述】:
经过一些查找和替换重构后,我最终得到了这个 gem:
const class A
{
};
“常量类”是什么意思?好像可以编译了。
【问题讨论】:
经过一些查找和替换重构后,我最终得到了这个 gem:
const class A
{
};
“常量类”是什么意思?好像可以编译了。
【问题讨论】:
const 在那个例子中是没有意义的,你的编译器应该给你一个错误,但是如果你用它来声明那个类的变量在结束 } 和 ; 之间,那么定义了这些实例如const,例如:
const class A
{
public:
int x, y;
} anInstance = {3, 4};
// The above is equivalent to:
const A anInstance = {3, 4};
【讨论】:
“const 类”是什么意思?好像可以编译了。
不适合我。我认为您的编译器只是出于礼貌而忽略了它。
编辑:是的,VC++ 默默地忽略 const,GCC 抱怨。
【讨论】:
如果你有这个:
const class A
{
} a;
那么它显然意味着 'a' 是 const。否则,我认为它可能是无效的c++。
【讨论】:
除非你之后声明一个类的实例,否则没有意义,比如这个例子:
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 实现。
【讨论】:
尝试用 GCC 编译它,它会给你以下错误:error: qualifiers can only be specified for objects and functions.
从错误中可以看出,只有对象(变量、指针、类对象等)和函数可以是常量。所以尝试将对象设为常量,然后它应该可以正常编译。const class A {};const A a ;
【讨论】: