C++中struct与Cla的的区别
来源:互联网 发布:小米盒子破解版软件 编辑:程序博客网 时间:2024/04/27 14:28
在C++中struct与Class可以说是没有区别,但是又可以说是很大区别。
因为C++要向下兼容C。所以C具有的东西,那么在C++里也具有。所以谈struct应该是从C谈起
struct在C中:struct是一种自定义的数据类型。既然是一种数据类型那么就肯定不能定义函数。C是面向过程的,面向对象的东西它自然也不具有。
struct在C++中;C++是面向对象的。根据对象的思想,struct应该是等价于CLass(C是没有Class这个东西的)。这里我们又引出了一个很大的话题,面向过程和面向对象的区别。这里我们只选其中很小的一部分来说。
面向过程认为,数据和数据的操作是分开的。(当然面向过程也可以刻意的实现把数据和数据的操作集合到一起)
面向对象认为,数据和数据的操作是一个整体,不应该分开的。
这样面向对象就和面向过程有了很大的冲突。这个冲突其实引发了struct的C和C++的差异性。
C++中的struct是可以包含函数的,可以拥有构造函数,析构函数同样拥有继承等能力。这个时候。。很多人就会疑惑?那struct和CLASS不就一样了吗?
对struct和class的确差别不大。从使用上差别不大。使用上的差别唯一的就是默认访问类型不一样struct默认公有,class默认私有。(改了- -!手误。。。)
肯定就有朋友会问,平常我们都不会依赖于默认啦,不同的编译器可能默认方式都不一样的。照这个思维不就是完全没区别了。对我说的很大区别,其实针对的是思想上并非使用上。
第一:struct是继承于C但又要适合于面向对象。所以struct是丢也不是,留下又多余的尴尬局面。
第二:C++中的struct已经被扩展,已经不再是C时代的struct
那么最大的思想差别是啥呢?我也说不清楚。思想的东西我觉得,是要靠感悟的,可能从我嘴来说出来的思想,在你眼里可能是狗屁不通,甚至是一堆臭鸡蛋。所以下面我说一个我认为的C++中struct思想。
在面向对象横行的时代。相信大家都对几个面向对象词语有很深的认识,对象,类,接口,继承等等。
但是大家留心会发现,C++里面没有“接口”这个东西。说起接口这个东西,就不能不说java了,在JAVA里是不允许多继承的,但是能实现继承多个接口。但是C++却是允许实现多继承,那么如果C++里出现接口这个东西,最后的结果也会变成多余。
所以我觉得“接口”其实已经在面向对象里形成了一种文化。但是作为编程界翘楚的C++却没有“接口”这样东西。人的思维是强大的,例如MS的做法就是将struct当成了接口来使用。
"我觉得C++中的struct和class区别不是在于使用,不在于语法糖,而是在于思想,在于构架约定等方面。"
- C++中struct与Cla的的区别
- C与C++中struct的区别
- C语言中typedef struct与struct的区别
- C与C++中struct的区别,以及C++中struct与Class的区别
- C与C++中struct的区别,以及C++中struct与Class的区别
- C与C++中struct及C++中struct与class的区别
- C与C++中struct使用的区别
- C语言中struct与union的区别
- C与C++中struct使用的区别
- C语言中,struct与union的区别
- c与c++中enum和struct定义的区别
- C语言中struct与union的区别
- C/C++中struct与class的区别
- 浅析c与c++中struct的区别
- GO的struct与C的struct区别
- [C#]class 与 struct 的区别
- C++:struct与class的区别
- c++类与c struct的区别
- Php判断用户通过手机访问wap还是电脑直接访问
- 读取移动硬盘上的fedora-LVM分区
- java数据类型
- cz的GEMINI
- Ubuntu Virtualbox fileshare and USB
- C++中struct与Cla的的区别
- Ext_基本文本输入框_Ext.form.TextField
- SAP里面本地时间与格林威治时间的转换
- 使用代码获取工具栏的指针。
- Ext_多行文本输入框_Ext.form.TextArea
- 创业投资——风险投资周期及股市趋势技术分析
- c++ using nameace 详解
- U盘安装ubuntu
- 不要忘记报名