C语言和C++语言最大的不同是什么?

C++语言是在C语言的基础上构建成的,C++这个名称寓意着C++是对C的超越和扩展。

但是,C语言和C++语言在设计哲学、编程范式和应用场景上存在着根本性的差异。

今天来讲讲这些差异,以期对程序员在开发项目时选择合适的工具起到一点协助的作用。

一、C语言程序可以改成C++程序吗?

当然可以,由于C语言和C++语言完全兼容。

如果单纯的将C语言程序改成C++程序,好像很简单。

列如我们要完成这个程序:

输入一个圆的半径,输出圆面积和圆周长。

C语言程序如下:

程序1:

C语言和C++语言最大的不同是什么?

其中第2行:

#define PI 3.14159

是预处理,意思是给3.14159一个替代PI,也就是说在程序里,凡是出现PI的地方,就换成3.14159。

这样做有什么好处呢?

好处就是当你觉得想把3.14159改成3.1415926的时候,不需要到程序里面一行一行修改,只需修改这一个地方就可以了。

程序1运行结果:

C语言和C++语言最大的不同是什么?

改成C++程序:

程序2:

C语言和C++语言最大的不同是什么?

程序2运行结果:

C语言和C++语言最大的不同是什么?

运行结果跟程序1的区别在于它没保证输出结果只有3位小数。

但是我们可以看到C++的输入输出流的确 比C语言的输入输出方便,至少不用那些%f来匹配变量的数据类型。有关C和C++的输入输出区别,我在之前的文章《C++的输入输出流》里面讲述过,有兴趣的朋友们可以翻看那篇文章看看。

那么用cout来输出就不能指定小数位数了吗?是可以指定的。

在C++中,可以使用 <iomanip> 头文件中的 std::fixed 和 std::setprecision 来指定小数位数:

std::fixed:固定小数格式,确保以小数形式输出

std::setprecision(n):设置小数点后保留 n 位数字

必须包含头文件<iostream>和<iomanip>。

程序3:

C语言和C++语言最大的不同是什么?

程序3的运行结果和程序1的一样,输出数据保留了3位小数。

但是C语言和C++语言的不同并不是输入输出的区别。实则在C++程序中也可以用scanf和printf函数输入输出,只要引人的头文件是stdio.h就行。

二、C语言和C++语言的区别

C和C++最根本的区别在于其编程范式。

C语言是过程式语言,核心是面向过程编程,即它关注的是如何一步步地完成任务。

C程序由一系列的函数构成,C语言的核心是函数、结构体和指针。

C++的核心是面向对象编程,它关注的是“谁(对象)来完成任务”。

C++程序由一个个对象组成,对象将数据(成员变量)和操作这些数据的方法(成员函数)封装在一起。C++的核心是类、对象、继承和多态。

以下是它们的区别。

C语言和C++语言最大的不同是什么?

如果你是第一次接触C++,那么上面的术语肯定有许多看不懂,没关系,我们今天先讲什么是面向对象编程。

三、面向对象编程

先看以下几个基本概念:

(1) 类和对象

面向对象编程是把所有的问题都归结为一个一个的对象,所有同类型的对象就是同一个类。

(2) 数据成员和方法成员

类所具有的属性成为类的成员,其中静态属性成为数据成员,动态属性成为方法成员(也叫函数成员)。

举个例子,对于人来说,所有的人都有的静态特征(数据成员)就是身高、体重、血型等等,动态特征(方法成员)则是呼吸、吃饭、睡觉等。

如下图:

C语言和C++语言最大的不同是什么?

这有点像C语言的结构体类型,但是结构体类型没有动态成员,只有数据成员。

(3) 类成员的访问属性

常用的类成员访问属性有3种:

私有访问权限(private)

公有访问权限(public)

保护访问权限(protected)

今天只说私有访问权限和公有访问权限。

如果一个成员是私有访问权限,那么表明它只能在类内部使用。

如果是公有访问权限,那么它可以在任何地方使用。

一般数据成员定义为私有的,用private关键字定义,方法成员定义为公有的,用public定义。

这就好像一部手机,手机里面的cpu、芯片这些是数据成员,我们不能触碰,我们能触碰和使用的是关机、开机、调静音这些功能,这些功能就是方法成员,定义成公有的我们就可以触碰就可以使用。

四、用面向对象的方法编程求圆面积和半径

好,目前我们再来看看这个求圆面积和圆周长的程序。

如果用面向对象的方法来编写求圆面积和圆周长的程序,必须先定义一个类,即圆类,这个类里面的数据成员有什么?

当然就是半径、面积、周长。

方法成员有什么?

方法成员实则都是围绕数据成员来开展的,要不就是取出数据成员的值,要不就是改变数据成员的值。

方法成员为什么又叫函数成员,由于它就相当于C语言里的函数,它的存在就是针对数据成员来开展的,所以方法成员名后面也要括号。

列如圆的方法成员有

给半径赋值( ),求面积( ),求周长( )等。

所以一个圆类可以如下定义:

C语言和C++语言最大的不同是什么?

类定义如下:

C语言和C++语言最大的不同是什么?

从这个类定义来看,数据成员只要一个半径也可以了,面积和周长都可以通过半径求出来,所以数据成员可以删掉面积和周长。

在主函数里,就定义类圆的对象,如:

C语言和C++语言最大的不同是什么?

由这个对象调用类里面的方法成员完成项目所要求的功能,列如给x的半径赋值为10,则需用用对象名x来调用方法成员setR():

C语言和C++语言最大的不同是什么?

想输出面积,用对象名x来调用方法成员fa( ):

C语言和C++语言最大的不同是什么?

具体程序如下。

程序4:

C语言和C++语言最大的不同是什么?

运行结果:

C语言和C++语言最大的不同是什么?

这就是面向对象的编程方法,与面向过程的编程方法有本质的区别。

五、总结

面向过程的编程方法(C语言)和面向对象的编程方法(C++)是不同的。

面向过程的编程步骤:

1、定义变量;

2、输入数据;

3、数据处理;

4、输出结果。

面向对象的编程步骤:

1、定义一个类:

(1)定义类里面的数据成员;

(2)定义类里面的方法成员,给出方法成员的实现代码。

2、在主函数定义类的对象;

3、用类对象调用类成员。

C语言和C++语言最大的不同是什么?

© 版权声明

相关文章

17 条评论

  • 头像
    马亿喵 读者

    C是爹,C++是儿子

    无记录
    回复
  • 头像
    来自月亮的爱心 读者

    总结道到位

    无记录
    回复
  • 头像
    热血汽车 读者

    C 与C++ 的区别,就跟肺与肺癌的区别一样。

    无记录
    回复
  • 头像
    神奇海螺 投稿者

    我不大理解你的话,可否解释一二?

    无记录
    回复
  • 头像
    骑着蜗牛追狐狸 读者

    我感觉每个字都能看懂

    无记录
    回复
  • 头像
    kikiyolo- 读者

    文科生看到就怕

    无记录
    回复
  • 头像
    炸毛的littlecat 投稿者

    指针呗

    无记录
    回复
  • 头像
    正宗鲜榨叶汁 投稿者

    两种

    无记录
    回复
  • 头像
    雨荷香远 读者

    继续加油💪

    无记录
    回复
  • 头像
    叶知秋 读者

    好棒👏

    无记录
    回复
  • 头像
    小太阳蓦然 读者

    C语言应用广泛,新手学习后就业机会较多。

    无记录
    回复
  • 头像
    重庆城市科技学院 读者

    对的,有C语言基础学别的都容易

    无记录
    回复
  • 头像
    浪人酒 读者

    收藏了,感谢分享

    无记录
    回复
  • 头像
    果农一哥 读者

    我来串门啦

    无记录
    回复
  • 头像
    安浙房地产 读者

    666

    无记录
    回复
  • 头像
    Mindiary098 投稿者

    谢谢友友鼓励

    无记录
    回复
  • 头像
    读者

    烦和看哪儿都烦

    无记录
    回复