C/C++中 struct 和 class 的区别

一、 class 和 struct 的区别

C++中 class 和 struct 的区别:

  1. 继承权限,struct 的默认继承权限为 public,class 的默认继承权限为 private 。
  2. 访问权限,struct 的默认访问权限为 public,class 的默认访问权限为 private 。

网上还流传着其他一些的区别,但总体来说最大的区别就是这两点,其他的区别或许并不常用到。

二、 C 和 C++中 struct 的区别

第一、 C++中的 struct 可以定义成员函数,但是 C 语言不行,C 语言中的结构体可以定义函数指针。

例如以下代码:

使用 GCC 编译会报错:

第二、 C 语言声明结构体必须要加 struct,C++不用。

C 语言中如果不加 struct 声明变量,编译器会报错:

如若不想加 struct 修饰,则需要使用 typedef 来重新定义类型。

第三、 C 语言中空结构体大小为 0,C++中结构体大小为 1 。

相同的代码:

使用 gccg++编译结果也不一样:

发表评论