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

马谦马谦马谦 C/C++评论336字数 461阅读 1 分 32 秒阅读模式

一、 class 和 struct 的区别

C++中 class 和 struct 的区别:

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

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

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

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

例如以下代码:

使用 GCC 编译会报错:

C/C++中struct和class的区别-图片1

C/C++中struct和class的区别-图片2

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

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

C/C++中struct和class的区别-图片2如若不想加 struct 修饰,则需要使用 typedef 来重新定义类型。

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

相同的代码:

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

C/C++中struct和class的区别-图片3

  最后更新:2019-12-29
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2019 年 1 月 29 日 16:50:36
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/c-cpp/the-difference-between-struct-and-class.html
指针和引用的区别 C/C++

指针和引用的区别

区别: 指针是一个变量类型,引用只是一个变量别名。 指针可以不用初始化,引用必须初始化。 指针可以指向空地址,引用不能指向空。 指针初始化后可以修改,引用不能修改。 其他: 引用本质上也是一个指针,内...
多态的原理:vptr指针和vtable虚函数表 C/C++

多态的原理:vptr 指针和 vtable 虚函数表

多态是 C++中的重要内容,也是设计模式的基础。 形成多态的几个基本条件为: 继承和虚函数 父类对象指向子类对象 多态形成的原理就是 vptr 指针和 vtable 虚函数表,当一个类中有虚函数时,编译器就会自...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证