C的结构体和C++结构体的区别

1、组成不同

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

2、权限不同

C的结构体对内部成员变量的访问权限只能是public,而C++允许public,protected,private三种。

3、特性(继承)不同

C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。

以上都是表面的区别,实际区别就是面向过程和面向对象编程思路的区别

1、C的结构体只是把数据变量给包裹起来了,并不涉及算法。

2、C++是把数据变量及对这些数据变量的相关算法给封装起来,并且给对这些数据和类不同的访问权限。

3、 C语言中是没有类的概念的,但是C语言可以通过结构体内创建函数指针实现面向对象思想。


结构体和类之间的区别

1、结构体是很多数据的结构,里面不能有对这些数据的操作,而类class是数据以及对这些数据的操作的封装,是面向对象的基础;

2、而且class对成员变量有访问权限的控制,而struct则没有,在结构体外可以访问结构体内任何一个变量,而在类外,则不能访问类中私有的成员变量。

3、这只是最主要的几点区别,还有其他的区别,总之,类是比结构体更高级的对数据的封装,结构体能做的,类都能做,反之则不然。

  • 结构在堆栈中创建,是值类型,而类是引用类型。每当需要一种经常使用的类型,而且大多数情况下该类型只是一些数据时,使用结构能比使用类获得更佳性能。

  • 结构是值类型,所以会影响性能,但根据使用结构的方式,这种影响可能是正面的,也可能是负面的。正面的影响是为结构分配内存时,速度非常快,因为它们将内 联或者保存在堆栈中。在结构超出了作用域被删除时,速度也很快。另一方面,只要把结构作为参数来传递或者把一个结构赋给另一个结构(例如A=B,其中A和B是结构),结构的所有内容就被复制,而对于类,则只复制引用。这样,就会有性能损失,根据结构的大小,性能损失也不同。注意,结构主要用于小的数据结构。但当把结构作为参数传递给方法时,就应把它作为ref参数传递,以避免性能损失——此时只传递了结构在内存中的地址,这样传递速度就与在类中的传递速度一样快了。另一方面,如果这样做,就必须注意被调用的方法可以改变结构的值。

class和struct有且仅有一个区别,那就是对于class说明的类成员,函数也好,变量也好,如果没有指定类型,缺省是private限定的。而对于struct,则是public的。

结构体数组效率比类数组效率高(不需要装箱合拆箱)。结构体集合(如Hashtable)效率比类集合效率低。集合的元素是引用类型,所以结构体必须进行装箱和拆箱处理。所以类在大的集合中更有效率。

结构体 struct 和类 class 的比较相关推荐

  1. 【C#】结构体struct和类class的比较

    代码出自 https://blog.csdn.net/qq_42672770/article/details/112761229 文章目录 background 1.Code 2.Results 3. ...

  2. C语言 结构体 struct Cat cat1;

    引入 使用传统技术解决 需要定义多个变量或数组 结构体与结构体变量的关系示意图 类似Java类中的对象(结构体)与属性(结构体变量) 一切物体都可以看作对象(结构体) 补充:C语言数据类型 简单使用案 ...

  3. go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  4. 指针、结构体、枚举类和文件

    指针 //指针变量中只能存放地址(指针) int *pointer = 100; //是不合法的,int *p=后面必须是地址变量 int a=10; int *p = &a; *p = 1; ...

  5. [ C语言 ]指针---结构体(struct)---分支语句(1)---初识C语言末尾

    文章目录 前言 一,指针 二,结构体(struct) 三,分支语句(选择结构) 总结​​​​ 前言 本篇文章主要记录指针末尾,结构体,和分支语句(选择结构) --------------------- ...

  6. linux 结构体 struct addrinfo 简介

    目录 定义 相关方法 1. getaddrinfo(const char, const char, const struct addrinfo, struct addrinfo*) 2. freead ...

  7. 结构体struct timeval 和 struct timespec的定义

    结构体struct timeval 和 struct timespec的定义均在头文件<sys/time.h>中,具体定义如下: struct timeval {long tv_sec; ...

  8. Golang结构体struct的使用(结构体嵌套, 匿名结构体等)

    转自: https://studygolang.com/articles/11313 golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但 ...

  9. linux sock结构体,struct socket结构体详解

    在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题.  由这个图可知,内核中的进程可以通过使用struct ...

最新文章

  1. Spring Framework Reference Documentation手册官网下载地址
  2. JS模式--职责链模式
  3. Android获取网速的方法
  4. mysql too many connections_mysql too many connections 解决方法
  5. eclipse jrebel插件
  6. mysql 版本太高_mysql创建新库以及解决版本过高8.0以上导致navicat无法连接的问题...
  7. android framework-下载Android系统源代码
  8. 程序员常用的3大Web安全漏洞防御解决方案:XSS、CSRF及SQL注入(图文详解)
  9. cartographer探秘第一章之安装编译与参数配置
  10. 【LeetCode-SQL】1336. 每次访问的交易次数
  11. 计算机如何在文段中插入符号,插入项目符号与编号(Word 2013基础)——想象力电脑应用...
  12. java快速开发项目_GitHub - Johnnyzhoutq/X-SpringBoot: X-SpringBoot是一个轻量级的Java快速开发平台,能快速开发项目并交付【接私活利器】...
  13. win10系统安装CH340驱动
  14. Java程序员找工作很难吗?可能没有get这些内容
  15. 船舶爬虫出现过的问题
  16. Dell H310配置no-raid直通模式
  17. 央妈不会告诉你的房贷真相:欠银行钱越多越久才越好!
  18. php闪字生成,在线闪字
  19. SDUSTOJ 1191 - 剪子包袱锤游戏 ( 结构体 函数的巧妙应用 )
  20. IDC、CDN、云服务商如何进行IPv6改造升级?

热门文章

  1. img 标签 / div 背景图片 默认图片 裂图替代
  2. python --旋转图片(横图转竖图)
  3. 正版软件推荐 - FliTik 翻页时钟 颜值与实力并存工具软件
  4. setsockopt()函数 参数详解 转自: 老鱼_新浪博客
  5. 【ACWing】1052. 设计密码
  6. 虚拟化 VMware ESXi(一)
  7. 大数据赋能交通业务管理——远眺智慧交通集成管控系统
  8. reiserfs相关
  9. AI 绘画Stable Diffusion 研究(五)sd文生图功能详解(下)
  10. 2017matlab优化器,Global Optimization Toolbox