为什么const对象必须有用户提供的构造函数?

时间:2012-03-09 10:08:18

标签: c++

  

可能重复:
  declaring a const instance of a class
  Why does C++ require a user-provided default constructor to default-construct a const object?

我的节目是这样的:

class c
{
};

int main()
{
    const c a;

    return 0;
}

当我使用g ++编译它时,它会提示:

main.cpp:10:7: note: ‘const class c’ has no user-provided default constructor

为什么,这只是一个空类而且什么都不做,为什么我必须提供一个用户提供的构造函数。

2 个答案:

答案 0 :(得分:1)

因为语言规则是这样说的。

常量必须在定义中设置其值,因为以后无法为其赋值。如果没有显式提供值,则类型必须具有默认构造函数。

答案 1 :(得分:1)

。它只是一个注释,甚至不是警告。理由是,班级不能做任何有用的事情,这很少是有意的。海湾合作委员会正在检查你是否忽视了某些事情。