在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. Poptset学员之牛奶咖啡糖
  2. python是c语言吗-初学者python和c语言先学哪个好呢?
  3. 关于epoll 水平触发在udp套接字上不生效问题的原因
  4. Rus入门到放弃——字符串与字符切片
  5. 命令2-Create Project Tree
  6. PHP大文件分片上传
  7. Extension延展(十八)
  8. ASP.NET画图全攻略(上)
  9. 小苹果源地址_越狱常用源地址推荐
  10. linux修改sybase数据库密码,巧用Sybase数据库的超级用户密码
  11. RTX 2080 Ti 刚捂热,卡皇3080Ti 就要来了?
  12. jflash烧录教程_3.烧录方式及烧录软件的使用
  13. 基于MTCNN+arcface的人脸检测和人脸识别
  14. 以Apollo为例学习/分析自动驾驶运动规划算法
  15. C语言 - 求阶乘和
  16. Eclipse快捷方式无法在桌面上打开
  17. LibOpenCM3(二) 项目模板 Makefile分析
  18. 如何制作饼图?制作步骤有哪些?专业的饼图制作软件
  19. 计算机的运作流程的个人感想
  20. sharedpreferences用法,京东面试真题解析,大厂面试题汇总

热门文章

  1. 操作系统-----多核CPU和多个单核CPU
  2. 真相:朋友圈的“小黄图”从刷爆到被封的“惊魂七小时”
  3. 拼多多开店一定要知道
  4. linux看线程占用率,查看linux线程的CPU占用率
  5. 爬取实时航班信息 - 从航班信息网站获取实时航班信息
  6. 提示以只读方式打开文件
  7. 如何查看服务器CPU核心数和线程数
  8. ASP网页FLASH图片播放只能在老版Internet Explorer 正常显示,最新主流浏览器都不支持,哪位大伽有好的代码改动妙招烦请赐教,谢谢
  9. java 异步通知_Java 异步回调机制实例解析
  10. 苹果cms安装mysql检测失败_苹果cms安装失败的几种解决方法