关于c++的结构体问题
为什么c语言的结构体要加typedef才能在声明的时候省略struct关键字,但c++不加typedef照样可以省略,这是为什么呢? 这是c++的进步吧至于底层原因,我觉得和c++中将struct视作特殊的class有关 以前是老版本的规范。声明结构struct A {int a ;} ;准确来说struct A才是一种类型而A是未定义的。因此以前人们喜欢把typedef和struct一起用typedef struct tagA {int a ;} A ;这样就能少写struct。
但现在由于C++规范的影响,所以在C++中就不这样使用了。
这里不用纠结,这是编译器按照规范来定义的规则,其实在内里实现是一样的。记住这个规范就可以。 在C++中,结构体也是一种自定义类型,所以声明语法上要和内置类型相吻合,符合认知。
页:
[1]