我在这里读到了关于C默认初始化的内容。它说:
如果T是const限定类型,则它必须是具有用户提供的默认构造函数的类类型。
该链接上给出的示例是(我只显示了与我的问题相关的程序语句,其他我省略了):
struct T1 {};
int main()
{
const T1 nd; // error: const class type with implicit ctor
}
但它在gcc 4.8.1上编译良好
因此,我认为成功编译上述程序的原因是结构T1中没有成员。因此,在这种情况下不会发生默认初始化。但如果我添加一个数据成员,如:
struct T1 { int a; };
int main()
{
const T1 nd; // error: const class type with implicit ctor
}
然后编译器给出适当的错误消息,如下所示:
6 11 [Error] uninitialized const 'a' [-fpermissive]
2 8 [Note] 'const struct T1' has no user-provided default constructor
3 8 [Note] and the implicitly-defined constructor does not initialize 'int T1::a'
那么,声明不应该这样写吗?
如果T是具有至少一个数据成员的const限定类型,则它必须是具有用户提供的默认构造函数的类类型。
如果我错了,请纠正我
C标准在这方面非常清楚,从[dcl.init]:
如果程序调用常量限定类型的对象的默认初始化,T应为具有用户提供的默认构造函数的类类型。
因此,gcc在这方面不符合要求,CPPFerence是正确的。
我需要帮助我的错误就像 代码:
我有一个超类动物和两个子类:猫和狗。Dog类有一个专属于它自己的新方法,称为playFetch()。 在运行时,我们知道会发生什么。请说服我为什么编译器不抱怨。还是我的论点正确?
我正在为两个3位数的乘积生成的最大回文编制程序。但程序给出的结果是999*999=998001有人能说出这个代码中的错误吗? 程序-
{“error”:“invalid_scope”,“error_description”:“AADSTS70011:为输入参数”scope“提供的值无效。作用域 https://graph.microsoft.com/User.Read https://graph.microsoft.com/User.ReadWrite https://graph.microsoft.com/User.ReadB
我花了三天的时间来寻找答案,看视频和论坛帖子,但没有运气。请看这四张照片。它似乎只在问题有图像文件时才这样做。