1、存储不同

结构体使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation)。  

  栈的空间相对较小.但是存储在栈中的数据访问效率相对较高。

  堆的空间相对较大.但是存储在堆中的数据的访问效率相对较低

结构体使用完之后就自动解除内存分配,类实例有垃圾回收机制来保证内存的回收处理。

2、类型不同

结构体是一种值类型,而类是引用类型。

值类型用于存储数据的值,引用类型用于存储对实际数据的引用。

所以结构体就是当成值来使用的,类则通过引用来对实际数据操作

3、默认的访问权限不同

struct默认是public,class默认是private 。

4、关键字不同

在类中可以使用但是在结构中限制使用的关键字有:abstract、sealed、protected;

StaTIc关键字可以用在类名前面用来声明静态类,但是不能用在struct前面,不存在静态结构。

5、初始化不同

类可以在声明的时候初始化,结构不能在申明的时候初始化(不能在结构中初始化字段),否则报错。

类的实质是一种数据类型,类似于int、char等基本类型,不同的是它是一种复杂的数据类型。因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实例化为对象时,才会变得可操作。

在C语言中,为了实现我想要的结构,可以自定义定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的成员,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。

在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,对结构体进行了扩展,C++的结构体可以包含函数。

看到一段话,觉得讲的挺好的:

struct 与class本质上应该是相同的,之所以要保留struct,很大一部分原因是为了与C兼容吧(C++的一篇文章中是这么说的,我感觉还是有一定的道理)。class感觉是应该是struct的扩充,除了可以设置成员的访问类型外,还可以有自己的成员函数,可以继承派生等,好象struct能做的class 都能做,但反过来就不行了,如果没有保护数据的要求,struct能做的我都用struct做,比较简单。

慢慢补充。。。

最新文章

  1. git 本地分支与远程分支
  2. visual studio 2012如何彻底删除TFS上的团队项目
  3. bzoj4046
  4. http://jingyan.baidu.com/article/e4511cf33479812b855eaf67.html
  5. HDU4614【线段树。】
  6. C语言可变参数在宏定义中的应用
  7. 转:几十种编程语言的快速入门教程- learnxinyminutes.com
  8. XShell连接 Linux系统,显示中文乱码
  9. OpenGL研究2.0 计算圆
  10. visio UML用例里面找不到include关系
  11. Spark环境搭建
  12. Parsing error was found in mapping #{}. Check syntax #{property|(expression), var1=value1, var2=val错误
  13. Layer-level的快速算法
  14. SpringBoot注册Servlet、Filter、Listener
  15. P1373 小a和uim之大逃离(动态规划)
  16. C# to IL 10 Exception Handling(异常处理)
  17. DB通用类:MySQL通用类
  18. retry之python重试机制
  19. 面图层拓扑检查和错误自动修改—ArcGIS案例学习笔记
  20. 20155218 2006-2007-2 《Java程序设计》第3周学习总结

热门文章

  1. 开机自起tomcat
  2. Vulkan Driver for VC4(Raspberry Pi 3b) base on mesa
  3. Linux的top命令及交换分区
  4. rsync 守护进程模式搭建 与常见报错
  5. Java中的微信支付(1):API V3版本签名详解
  6. mysql 索引的原理(超细)
  7. element ui实现form验证起始时间不能大于结束时间
  8. 计算机网络:TCP协议建立连接的过程为什么是三次握手而不是两次?【对于网上的两种说法我的思考】
  9. 团灭 LeetCode 股票买卖问题
  10. 【Kubernetes学习笔记】-使用Minikube快速部署K8S单机学习环境