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

Why const object must have a user-provided constructor?

本文关键字:用户 构造函数 const 对象 为什么      更新时间:2023-10-16

可能重复:
声明类的const实例
为什么C++需要用户提供的默认构造函数来默认构造const对象?

我的程序是这样的:

class c
{
};
int main()
{
    const c a;
    return 0;
}

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

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

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

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

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

你不需要。这只是一个提示,甚至不是一个警告。其基本原理是该类不能做任何有用的事情,而这很少是有意的。GCC只是检查一下你是否忽略了什么。

相关文章: