编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?


1. C++语言将struct当成类来处理的 , 所以C++的struct可以包含C++类的所有东西 , 例如构造函数 , 析构函数 , 友元等 , C++的struct和C++类唯一不同就是

编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
本文插图

struct成员默认的是public ,C++默认private 。 而C语言struct不是类 , 不可以有函数 , 也不能使用类的特征例如public等关键字, 也不可以有static关键字 。
2. C++ struct里面成员初始化的形式和类是相同的 , 不可以直接初始化 , 就是不可以定义成员的时候同时初始化 。 C语言 struct中间的某个类型(例如int)也不可以直接初始化 。
就是说下面int a = 0;在C++和C语言里面都是不能通过的 。
3. 初始化方式 , C++ struct的初始化 , C++不仅拥有C语言的初始化方式 。 如下:

编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
本文插图

也可以使用类的初始化方式

编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
本文插图

4. 类型不同 , 下面代码:
在C里面实际上数据类型为 (struct HE) , 所以定义一个结构HE变量都要 带上struct.
structHE a; //C语言 变量方式
而在C++里面实际上数据类型为HE(主要是因为结构体被当成类对待了),所以定义变量不需要 struct.
HE a; //C++语言 变量
5. typedef struct 在C++和C语言中都是一样的功能 , 定义别名 。但是要注意下面的代码的区别
【编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?】//代码一

编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
本文插图

//代码二

编程小火车|C/C++编程笔记:C语言和C++语言的 struct 对比!区别在哪里?
本文插图

上面两个代码省略 struct的名字 HE都是可以的 。
总结:C++语言因为是和C语言兼容的 , 所以C语言的语法在C++编译器里不会出错 , 但是程序员最好知道什么是C语言 , 什么是C++语言 。


    推荐阅读