先用C++编写一个加法程序
#include <iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
int main()
{
int x = 5, y = 10;
int z = add(5, 10);
cout << "x = " << x << endl;
cout << "y = " << y << endl;
cout << "x + y = " << z << endl;
return 0;
}
运行结果:
x = 5
y = 10
x + y = 15
从上一节的Hello World程序和本节的加法程序来看,C和C++貌似看起来差不多,只是修改了一些头文件和语法而已。那么,二者真的高度相似吗? 答案是否定的!C和C++差别非常大。 C是面向过程的。 C++既可以面向过程,也可以面向对象,并且以面向对象为主。 为何要以面向对象为主呢?因为若只是面向过程,用C语言就行了,不用再劳心劳力再创造一种新的语言。C++是一些聪明的程序员在C的基础上创造、发展起来的,与C语言最大的区别就是面向对象。
C语言的重点在于算法和数据结构,C程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理得到输出。 所以c语言是面向过程语言。
而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程控制。 从这一点看,C++是面向对象编程(OOP)的。 C++还像C语言一样面向过程。 所以C++既是面向过程的语言 ,也是面向对象的语言。一般来说,用它的面向对象这方面。
以后会学到Java。Java不能面向过程,是完全面向对象的。
以狗吃屎为例,来说明面向过程和面向过对象的区别。
C语言:吃(狗,屎) 这里“吃”是函数名,“狗”和“屎”是参数。强调的是吃这一过程。
C++:狗.吃屎() 这里狗是对象,吃屎是狗的一个函数。语法是一个完整的主谓宾结构。主语是“狗”,谓语是“吃”,宾语是“屎”。 狗除了吃屎外,还有其他行为,比如汪汪叫,伸舌头等。语法为 狗.汪汪叫() 狗.伸舌头() 这一系列行为里,强调的是“谁来做”,这里是狗来做,所以强调的是狗这一对象。