C++语言是在C语言的基础上构建成的,C++这个名称寓意着C++是对C的超越和扩展。
但是,C语言和C++语言在设计哲学、编程范式和应用场景上存在着根本性的差异。
今天来讲讲这些差异,以期对程序员在开发项目时选择合适的工具起到一点协助的作用。
一、C语言程序可以改成C++程序吗?
当然可以,由于C语言和C++语言完全兼容。
如果单纯的将C语言程序改成C++程序,好像很简单。
列如我们要完成这个程序:
输入一个圆的半径,输出圆面积和圆周长。
C语言程序如下:
程序1:

其中第2行:
#define PI 3.14159
是预处理,意思是给3.14159一个替代PI,也就是说在程序里,凡是出现PI的地方,就换成3.14159。
这样做有什么好处呢?
好处就是当你觉得想把3.14159改成3.1415926的时候,不需要到程序里面一行一行修改,只需修改这一个地方就可以了。
程序1运行结果:

改成C++程序:
程序2:

程序2运行结果:

运行结果跟程序1的区别在于它没法保证输出结果只有3位小数。
但是我们可以看到C++的输入输出流的确 比C语言的输入输出方便,至少不用那些%f来匹配变量的数据类型。有关C和C++的输入输出区别,我在之前的文章《C++的输入输出流》里面讲述过,有兴趣的朋友们可以翻看那篇文章看看。
那么用cout来输出就不能指定小数位数了吗?是可以指定的。
在C++中,可以使用 <iomanip> 头文件中的 std::fixed 和 std::setprecision 来指定小数位数:
std::fixed:固定小数格式,确保以小数形式输出
std::setprecision(n):设置小数点后保留 n 位数字
必须包含头文件<iostream>和<iomanip>。
程序3:

程序3的运行结果和程序1的一样,输出数据保留了3位小数。
但是C语言和C++语言的不同并不是输入输出的区别。实则在C++程序中也可以用scanf和printf函数输入输出,只要引人的头文件是stdio.h就行。
二、C语言和C++语言的区别
C和C++最根本的区别在于其编程范式。
C语言是过程式语言,核心是面向过程编程,即它关注的是如何一步步地完成任务。
C程序由一系列的函数构成,C语言的核心是函数、结构体和指针。
C++的核心是面向对象编程,它关注的是“谁(对象)来完成任务”。
C++程序由一个个对象组成,对象将数据(成员变量)和操作这些数据的方法(成员函数)封装在一起。C++的核心是类、对象、继承和多态。
以下是它们的区别。

如果你是第一次接触C++,那么上面的术语肯定有许多看不懂,没关系,我们今天先讲什么是面向对象编程。
三、面向对象编程
先看以下几个基本概念:
(1) 类和对象
面向对象编程是把所有的问题都归结为一个一个的对象,所有同类型的对象就是同一个类。
(2) 数据成员和方法成员
类所具有的属性成为类的成员,其中静态属性成为数据成员,动态属性成为方法成员(也叫函数成员)。
举个例子,对于人来说,所有的人都有的静态特征(数据成员)就是身高、体重、血型等等,动态特征(方法成员)则是呼吸、吃饭、睡觉等。
如下图:

这有点像C语言的结构体类型,但是结构体类型没有动态成员,只有数据成员。
(3) 类成员的访问属性
常用的类成员访问属性有3种:
私有访问权限(private)
公有访问权限(public)
保护访问权限(protected)
今天只说私有访问权限和公有访问权限。
如果一个成员是私有访问权限,那么表明它只能在类内部使用。
如果是公有访问权限,那么它可以在任何地方使用。
一般数据成员定义为私有的,用private关键字定义,方法成员定义为公有的,用public定义。
这就好像一部手机,手机里面的cpu、芯片这些是数据成员,我们不能触碰,我们能触碰和使用的是关机、开机、调静音这些功能,这些功能就是方法成员,定义成公有的我们就可以触碰就可以使用。
四、用面向对象的方法编程求圆面积和半径
好,目前我们再来看看这个求圆面积和圆周长的程序。
如果用面向对象的方法来编写求圆面积和圆周长的程序,必须先定义一个类,即圆类,这个类里面的数据成员有什么?
当然就是半径、面积、周长。
方法成员有什么?
方法成员实则都是围绕数据成员来开展的,要不就是取出数据成员的值,要不就是改变数据成员的值。
方法成员为什么又叫函数成员,由于它就相当于C语言里的函数,它的存在就是针对数据成员来开展的,所以方法成员名后面也要括号。
列如圆的方法成员有
给半径赋值( ),求面积( ),求周长( )等。
所以一个圆类可以如下定义:

类定义如下:

从这个类定义来看,数据成员只要一个半径也可以了,面积和周长都可以通过半径求出来,所以数据成员可以删掉面积和周长。
在主函数里,就定义类圆的对象,如:

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

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

具体程序如下。
程序4:

运行结果:

这就是面向对象的编程方法,与面向过程的编程方法有本质的区别。
五、总结
面向过程的编程方法(C语言)和面向对象的编程方法(C++)是不同的。
面向过程的编程步骤:
1、定义变量;
2、输入数据;
3、数据处理;
4、输出结果。
面向对象的编程步骤:
1、定义一个类:
(1)定义类里面的数据成员;
(2)定义类里面的方法成员,给出方法成员的实现代码。
2、在主函数定义类的对象;
3、用类对象调用类成员。







C是爹,C++是儿子
总结道到位
C 与C++ 的区别,就跟肺与肺癌的区别一样。
我不大理解你的话,可否解释一二?
我感觉每个字都能看懂
文科生看到就怕
指针呗
两种
继续加油💪
好棒👏
C语言应用广泛,新手学习后就业机会较多。
对的,有C语言基础学别的都容易
收藏了,感谢分享
我来串门啦
666
谢谢友友鼓励
烦和看哪儿都烦