在C++中,结构体是一种特殊形态的类。

结构体和类的唯一区别就是:  结构体和类具有不同的默认访问控制属性。

  类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private)

  结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public)

C++中,不使用结构体丝毫不会影响程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性。

但有时仍会在C++中使用结构体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据。(若用类来保存,因类中成员默认为私有,还要为每个数据成员特定函数来读取和改写各个属性,比较麻烦。)

C语言中结构体不允许定义函数成员,且没有访问控制属性的概念。

C++为C语言中的结构体引入了成员函数、访问控制权限、继承、包含多态等面向对象特性。

C++在struct之外引入了class关键字,但为了保持与C程序的兼容,C++保留了struct关键字,并规定结构体默认访问控制权限为公有类型。

另外,C语言中,空结构体的大小为0,而C++中空结构体(属于空类)的大小为1。

C++中空类的大小为1的原因:

  空类也可以实例化,类实例化出的每个对象都需要有不同的内存地址,为使每个对象在内存中的地址不同,所以在类中会加入一个隐含的字节。

C++结构体和类的区别相关推荐

  1. 【唐老狮】C#——结构体和类的区别

    [结构体和类的区别] 结构体是值类型,类是引用类型 结构体存在栈中,类存在堆中 结构体成员不能使用protected访问修饰符,而类可以 结构体成员变量申明不能指定初始值,而类可以 结构体不能申明无参 ...

  2. [C#]结构体和类的区别

    结构体和类的区别:     在做一个项目时,使用了较多的结构体,并且存在一些结构体的嵌套,即某结构体成员集合包含另一个结构体等,总是出现一些奇怪的错误,才终于下决心好好分析一下到底类和结构体有啥不同, ...

  3. 结构体和类的区别详细讲解

    结构体和类的区别 C的结构体和C++结构体的区别 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. C的结构体对 ...

  4. C#中的结构体与类的区别

    转载自:https://www.cnblogs.com/to-creat/p/5268729.html C#中的结构体与类的区别 经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自 ...

  5. C#中结构体和类的区别

    结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的 C#结构体和类的区别问题 这两种数据类型的本质区别主要是各自指向的 ...

  6. C语言结构体与C++中结构体和类的区别

    在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有.注意,C++中的结构体是可以有析 ...

  7. C++中结构体与类的区别介绍

    在参与以C++为编程基础的项目应用中总会遇到结构体类型与类的数据类型,但是其具体应用区别模糊不清 现将其区别总结如下,欢迎补充共同学习(先介绍C和C++中结构体的不同,再对比C++中结构体与类的区别) ...

  8. swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)

    在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...

  9. 结构体和类的区别(待考究)

     1.C的结构体和C++结构体的区别 1.1 C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数.所以C的结构体是没有构造函数.析构函数.和this指针的. 1.2 C的 ...

  10. C/C++中结构体和类的区别

    结构体是为能够保存不同类型的数据而存在的,因为数组朱能够保存一种数据类型,而在平时的编程中我们需要用到不同数据类型的一个整体结构,例如一个学生就有不同的属性,姓名,年龄,学号,性别等等,就需要用不同的 ...

最新文章

  1. mybatis的一对一 一对多 多对多
  2. C++用顶层函数重载操作符(一)
  3. spo2数据集_Arduino 血氧心率模块传感器数据采集
  4. jQuery EasyUI API 中文文档 - 进度条
  5. 世纪渣男何书桓! | 今日最佳
  6. 阿里一面,说说你知道消息中间件的应用场景有哪些?
  7. source insight 配置
  8. CrystalReport runtime的下载地址
  9. PHP面相对象中的重载与重写
  10. js读取服务器excel文件是否存在,js读取Excel文件
  11. AndroidX使用
  12. 华为3COM正式更名为『杭州华三通信技术有限公司(H3C)』
  13. 微信小程序腾讯服务器地址要购买吗,微信小程序JavaScript SDK
  14. php 指纹验证失败,为什么手指沾了水,指纹识别就会失效?液体会导致指纹解锁失败?...
  15. android 摄像头测血压,自拍测血压的手机软件来了!准确率高达95%!
  16. 汇编语言(一)-基础知识
  17. 回归分析中的p值和R方哪个更重要?
  18. 深度学习(七)——图像验证码破解(数字加减验证码)
  19. 忽然看到自己十年前发的关于转计算机专业的帖子
  20. 利用bmob实现简单的注册和登录

热门文章

  1. opengl 绘制房间 卧室 :桌椅板凳+床+衣柜
  2. 连续函数可视化——连续调制波形y=sin(t)sin(9t)
  3. usb口拒绝访问_U盘插入后显示拒绝访问怎么办?
  4. 中小企业OA系统方案选型六个误区
  5. 交易模型的定义及理论基础
  6. 将图片画到canvas 上的几种方法
  7. Spring配置文件获取系统的环境变量
  8. MM配置:评估范围、评估控制、评估范围分组,评估类,移动类型的科目分组,自动记账配置
  9. java 网页提示被阻止怎么办_win7系统网页提示应用程序被JAVA安全阻止_win7系统网页提示应用程序被JAVA安全阻止解决方法-系统屋...
  10. 中专计算机应用基础视频教程,中职计算机应用基础教学教程.doc