gpt4 book ai didi

c++ - 类声明大括号后的分号

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:36 32 4
gpt4 key购买 nike

在 C++ 类中,为什么在右大括号后有分号?我经常忘记它并得到编译器错误,因此浪费了时间。对我来说似乎有些多余,但事实并非如此。人们真的会做这样的事情吗:

class MyClass
{
.
.
.
} MyInstance;

我从结构和枚举的 C 兼容性角度得到它,但由于类不是 C 语言的一部分,我猜它主要是为了保持相似声明结构之间的一致性。

我一直在寻找与设计原理更相关的东西,而不是能够更改任何东西,尽管一个好的代码完成 IDE 可能会在编译之前捕获它。

最佳答案

link @MichaelHaren 提供的似乎提供了根本原因。分号(正如其他人指出的那样)是从 C 继承的。但这并不能解释为什么 C 首先使用它。讨论包括这个例子的精华:

struct fred { int x; long y; }; 
main()
{
return 0;
}

除非另有声明,否则旧版本的 C 函数具有隐式 int 返回类型。如果我们在结构定义的末尾省略 ;,我们不仅定义了一个新类型 fred,而且还声明了 main() 将返回 fred 的实例。 IE。代码将像这样解析:

struct fred { int x; long y; } main()
{
return 0; /* invalid return type, expected fred type */
}

关于c++ - 类声明大括号后的分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49651617/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com