- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本文由长春白癜风专科医院/ 收集,转载请注明出处
深入理解C++语言--从本质上理解C 与C++
如果说任何事物都可以抽象为一种数据结构,这个数据结构肯定要
有我们想操作的对象--该事物本身(它包括各种属性、要素),定义为
数据;而这个事物本身(数据)肯定能进行各种各样的操作,如整数能
+-*/%等,开关有开、关等操作,这各种各样的操作即为运算;既然是
运算可定有运算规则,如浮点数就不能进行取余运算,开关不能吃等;
总结起来:
个人认为,C 语言可以说是以数值型数据结构 (如void,char,
int,float )为基础,抽象出来的语言;它的任何操作都都被局限于数值
型数据结构这一层面上了,即使有构造类型struct 可以定义些复杂类型,
但是它还是需要人工进行显式地赋值(详细见下面说明),可以说构造
类型struct 可以上C 语言拥有面向对象的思想,但是实现不了真正的面
向对象,同时也可以理解为什么被称为面向过程的了。因此可以看出C
语言中各种操作都是围绕变量和函数,变量是如下类型的数值型数据结
构,而函数是针对这些变量的数值型运算!
本文由吉林白癜风医院/ 收集,转载请注明出处
本文由长春白癜风专科医院/ 收集,转载请注明出处
利用struct 构造类型已经初步具有面向对象的思想了(如Linux
内核完全使用C 语言编写,但是使用了很多面向对象的思想),但是它
仍然局限于数值型数据结构这一层面上,因为构造类型struct 中成员函
数不能直接定义,仍需利用指针,然后对于指针进行函数地址的赋值(数
值的赋值),并且C 定义的struct 构造类型不能实现封装、隐藏,所有
数据都是人工显式执行的,见下面实例分析。
例如,定义一个new_type 的数据结构,包含了a,b 两个操作数(数
据),还有一个对于这两操作数的运算add 。
[cpp] view plaincopy
1. struct new_type{
2. int a;
3. int b;
4. int (*add)(int a, int b);
5. };
6.
7. int f_add(int a, intb)
8. {
9. return a+b;
本文由吉林白癜风医院/ 收集,转载请注明出处
本文由长春白癜风专科医院/ 收集,转载请注明出处
10. }
11.
12. struct new_type test;
13. test.add=f_add; //1。可以看出是基于数值型数据结构层面的赋值
14. test-add(test.a, test.b); //2。所有数据都是显式地调用执行的
见上,即使有struct 构造类型可以定义些复杂类型,但是它还是需要人
工进行显式地赋值(如1);而且它还要在其他函数中显式地调用,不
能实现封装、隐藏(如2 )。
class 与struct 之间的区别
本文由吉林白癜风医院/ 收集,转载请注明出处
本文由长春白癜风专科医院/ 收集,转载请注明出处
面向过程的C 是基于数值型数据结构,即使有struct 构造类型
可以定义些复杂类型,但是它还是需要人工进行显式地赋值;而且它还
要在其他函数中显式地调用,不能实现封装、隐藏。
而面向对象的C++则不同,它已经升华到基于非数值型数据结构
(当然也包含数值型数据结构),class 类,全部靠编译器实现相关联,
封装,隐藏,和重定向。
C++则是在C 基础上进一步抽象,升华到比C 更高的一个层面,
这样就不仅仅局限于数值型的数据结构了,通过类的定义把数据类型扩
展到非数值型的数据;
而运算符的重载则可以重新定义数值型运算(+-*/%等)对应于
非数值数据的运算 (如+-*/%等可以重定向为某一具体的操作)。
C++类的对象不仅仅是一般意义上的变量了,它的内部能够进行
自己的操作、运算,而对外却是黑盒,只是保留一个接口留给用户。
本文由吉林白癜风医院/ 收集,转载请注明出处
文档评论(0)