御笔剑客 发表于 2018-12-28 10:20:27

关于c++的结构体问题

为什么c语言的结构体要加typedef才能在声明的时候省略struct关键字,但c++不加typedef照样可以省略,这是为什么呢?

BngThea 发表于 2018-12-28 11:02:04

这是c++的进步吧
至于底层原因,我觉得和c++中将struct视作特殊的class有关

行客 发表于 2018-12-28 12:05:02

以前是老版本的规范。声明结构struct A {int a ;} ;准确来说struct A才是一种类型而A是未定义的。因此以前人们喜欢把typedef和struct一起用typedef struct tagA {int a ;} A ;这样就能少写struct。
但现在由于C++规范的影响,所以在C++中就不这样使用了。

这里不用纠结,这是编译器按照规范来定义的规则,其实在内里实现是一样的。记住这个规范就可以。

火麒麟 发表于 2019-1-5 16:10:07

在C++中,结构体也是一种自定义类型,所以声明语法上要和内置类型相吻合,符合认知。
页: [1]
查看完整版本: 关于c++的结构体问题