C++与C的最大区别----面向对象与类

C++与C的最大区别----面向对象与类(不知道写点啥的乱作)

一. 面向对象和面向过程的区别

首先来说一下面向对象和面向过程的区别吧。现在常用的语言有很多种。例如:js,php,asp,python,jsp,c,c++,java,c#,go等等。而这些语言可以根据某些特点加以分类。比如,分为面向对象的语言和面向过程的语言。而向C语言就属于面向过程的语言。我们在用C语言解决问题的时候是怎样的思路呢?比如,我们想把大象装进冰箱,我们会怎么做呢。

#include<iostream>
using namespace std;
void open_1()//将冰箱门打开的函数
{......}
void put_2()//将大象放入冰箱的函数
{......}
void close_3()//将冰箱门关上的函数
{......}
int main()
{
open_1();
put_2();
close_3();
}

我们大概会像这样,将整件事情分为三步,然后编写三个函数来完成这三步,再按照一定的顺序实行,以达到目的。这大概就是面向过程的本质吧。面向过程就是以函数为单位,把一个一个的函数组织起来,构成一个程序。
那么,除了这种方法,还有没有别的编程方法呢,是有的,那就是面向对象。面向对象不再以函数为中心,而是以对象和类为中心,以函数为辅助,来完成某个目的。像C++和java,都是面向对象的语言。一般来说,面向对象的语言比面向过程的语言开发速度更快。面向对象的语言封装性更好(像private,外界一般是不能访问的),效率更高,模块化更好。当然,也不是说面向过程的语言不行,只是从效率方面来说略逊一筹。

二.对象与类

接下来,我们来说一下何为对象。什么是对象呢?对象=数据(数据类型)+行为(函数)。举个例子吧,比如说手机和风扇,我们现在用伪代码写个程序,来描述一下手机。手机有什么特点呢?从功能上来说,可以用来打电话,从品牌来说,有华为,小米,vivo等等,从外观来说,类型方面有按键的和触屏的,颜色方面有玫瑰金,纯黑等等,还有一些自带的属性,比如型号,内存等等。我们一般描述一个手机会怎么说呢,我们会说它是一款华为牌的,触屏的,纯黑色的,有128G内存的手机,诸如此类。
如果我们用C语言会怎么写呢,

struct 手机{
int type_1;//类型
int brand_2;//品牌
char colour_3[10];//颜色
int ram_4;//内存
};

很明显,用C语言是无法描述手机的功能的,他只能简单的描述一些手机的外在特点,而对于手机的内在功能是无法描述的。那我们用C语言如何来描述用手机打电话这件事呢,

struct 手机{
int type_1;//类型
int brand_2;//品牌
char colour_3[10];//颜色
int ram_4;//内存
};
void 打电话(手机,手机号码)
{
......
}
手机 vivo手机;
打电话(vivo手机,123456789);

就先上面所写的,我们需要定义一个有打电话功能的函数,来让手机完成打电话这个操作,这样就使得手机与打电话被分开了,这就是面向过程的缺陷。面向过程是让手机有了打电话这个功能,而不是手机所自有的功能和属性。换言之,通过打电话这个函数我们也可以用风扇来完成打电话这个操作,但实际上风扇是无法打电话的。
那么,用C++如何操作呢,

class 手机{
int type_1;//类型
int brand_2;//品牌
char colour_3[10];//颜色
int ram_4;//内存
void 打电话(手机号码)
{
......
}
};
手机 小米手机;
小米手机.打电话(123456789);

用C++的话,就可以是手机本身拥有了打电话的功能,换言之,如果不是手机,就不会拥有打电话这个功能。
说了这么多,到底什么是对象呢,像小米手机,华为手机,vivo手机,都是对象,而像此类的对象组合在一起,就成了广义上的手机,也就是我们所说的类。

三.作者寄语

这次写的也是有点混乱,但我觉得应该差不多,总的来说就是,面向过程是给某个事物一个功能,借助它来完成某件事,而面向对象就是某个事物本身就拥有某个功能,只是让他表现出来而已。类,就是对象的集合。
好,本次就到这里。我只是个小白,或许见解不够深刻,或许有些错误,欢迎各位大佬指正。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值