深入理解C++语言--从本质上理解C与C++
 如果说任何事物都可以抽象为一种数据结构,这个数据结构肯定要有我们想操作的对象--该事物本身(它包括各种属性、要素),定义为数据;而这个事物本身(数据)肯定能进行各种各样的操作,如整数能+-*/%等,开关有开、关等操作,这各种各样的操作即为运算;既然是运算可定有运算规则,如浮点数就不能进行取余运算,开关不能吃等;总结起来:

个人认为,C语言可以说是以数值型数据结构(如void,char,int,float)为基础,抽象出来的语言;它的任何操作都都被局限于数值型数据结构这一层面上了,即使有构造类型struct可以定义些复杂类型,但是它还是需要人工进行显式地赋值(详细见下面说明),可以说构造类型struct可以上C语言拥有面向对象的思想,但是实现不了真正的面向对象,同时也可以理解为什么被称为面向过程的了。因此可以看出C语言中各种操作都是围绕变量和函数,变量是如下类型的数值型数据结构,而函数是针对这些变量的数值型运算!

利用struct构造类型已经初步具有面向对象的思想了(如Linux内核完全使用C语言编写,但是使用了很多面向对象的思想),但是它仍然局限于数值型数据结构这一层面上,因为构造类型struct中成员函数不能直接定义,仍需利用指针,然后对于指针进行函数地址的赋值(数值的赋值),并且C定义的struct构造类型不能实现封装、隐藏,所有数据都是人工显式执行的,见下面实例分析。
见上,即使有struct构造类型可以定义些复杂类型,但是它还是需要人工进行显式地赋值(如1);而且它还要在其他函数中显式地调用,不能实现封装、隐藏(如2)。 
 
 
   
个人认为,C语言可以说是以数值型数据结构(如void,char,int,float)为基础,抽象出来的语言;它的任何操作都都被局限于数值型数据结构这一层面上了,即使有构造类型struct可以定义些复杂类型,但是它还是需要人工进行显式地赋值(详细见下面说明),可以说构造类型struct可以上C语言拥有面向对象的思想,但是实现不了真正的面向对象,同时也可以理解为什么被称为面向过程的了。因此可以看出C语言中各种操作都是围绕变量和函数,变量是如下类型的数值型数据结构,而函数是针对这些变量的数值型运算!

利用struct构造类型已经初步具有面向对象的思想了(如Linux内核完全使用C语言编写,但是使用了很多面向对象的思想),但是它仍然局限于数值型数据结构这一层面上,因为构造类型struct中成员函数不能直接定义,仍需利用指针,然后对于指针进行函数地址的赋值(数值的赋值),并且C定义的struct构造类型不能实现封装、隐藏,所有数据都是人工显式执行的,见下面实例分析。
例如,定义一个new_type的数据结构,包含了a,b两个操作数(数据),还有一个对于这两操作数的运算add。
- struct new_type{
- int a;
- int b;
- int (*add)(int a, int b);
- };
- int f_add(int a, intb)
- {
- return a+b;
- }
- struct new_type test;
- test.add=f_add; //1。可以看出是基于数值型数据结构层面的赋值
- test->add(test.a, test.b); //2。所有数据都是显式地调用执行的
class与struct之间的区别

 
 相关推荐
  jinhao    2020-09-07  
   淡风wisdon大大    2020-06-06  
   yoohsummer    2020-06-01  
   baike    2020-05-19  
   hxmilyy    2020-05-11  
   小灰笔记    2020-03-16  
   jaybeat    2020-03-13  
   yinren    2020-03-11  
   86477414    2020-03-07  
   小飞侠V    2020-03-05  
   IT之家    2020-03-11  
   SXIAOYI    2020-09-16  
   impress    2020-08-26  
   liuqipao    2020-07-07  
   chenjia00    2020-05-29  
   扭来不叫牛奶    2020-05-08  
   黎豆子    2020-05-07  
 