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:
确定

拖动滑块以完成验证