C++
那么什么是C++?如果去翻教科书,用户会发现各种不同的定义。在这里,用户需要知道最透彻的一点:C++是面向对象的,C是面向过程的。C++之父Bjarne Stroustrup定义C++是
C with Classes
但这不妨碍C++进行过程式编程。同时,C++基本可以运行所有的C代码,反之则不然。比如前一页的代码完全可以用C++编译器来编译并运行。另外,C++中的C部分赋予了C++紧密联系硬件的能力,同时结合C++中C语言不具备的面向对象性编程,造就了C++的广泛应用。接下来,我们不得不去讨论C++的主要特性:面向对象式编程。
举例,如果要进行矢量操作(不考虑C++中现存的vector
类型),利用现存的int
进行操作有点麻烦(假定矢量元素都是整数):首先,矢量有3个元素,也就是需要三个int
构成一个数组才行。如果对矢量进行加和,需要对三个int
分别加和。那么C或许可以这样写:
int main()
{
int vecFirst[3] = {1, 2, 3};//矢量分量分别为1,2,3
int vecSecond[3] = {2, 3, 4};//矢量分量分别为2,3,4
int result[3];//声明一个新的没有值得矢量
result[0] = vecFirst[0] + vecSecond[0];//新矢量的第一个分量是vecFirst和vecSecond的第一个分量加和
result[1] = vecFirst[1] + vecSecond[1];//以此类推
result[2] = vecFirst[2] + vecSecond[2];//以此类推
return 0;
}
在这里简单介绍一下类。大家都知道有int
这个类型,它表示整型,double
表示双精度浮点,char
表示字符。这些内置的基本类型能完成所有的操作么?当然不能。C++则提供一个,让用户自己去定义类型的思想,这个用户自定义的类型,就叫做类(Class)。在这例子中,用户可以自己定义一个类型叫vec
,也可以叫shiliang
(随你所想),在这个类型中,自动就包含了三个int
分量,这些int
分量就是vec
或shiliang
的成员。在随后的介绍中,你还会接触到私有成员和公有成员的含义。
int main()
{
vec vecFirst(0, 1, 2);//自定义vec类型初始化
vec vecSecond(2, 3, 4);//自定义vec类型初始化
vec result(vecFirst + vecSecond); //自定义vec类型的加和操作
return 0;
}
在上面这段C++代码中,如果定义好了vec
类型,岂不就是完全常规的操作呢?在这里另外考虑一个小例子:明天你要起床,上班,吃午饭,下班,睡觉,共5个流程。如果用函数来表示,C语言就需要这样写(如果能写中文代码的话):
int main()
{
起床(你);
上班(你);
吃午饭(你);
下班(你);
睡觉(你);
return 0;
}
这些代码顺序执行,其中你
,是函数执行的对象。代码的意思就是你
进行起床()
这个函数,完成起床的操作,顺序的其他函数也如此。这样你就完成了五个操作。同样在C++中,用户可以定义一个类型为你
,代码则是这个样子:
int main()
{
你.起床();
你.上班();
你.吃午饭();
你.下班();
你.睡觉();
return 0;
}
含义是你
执行起床()
的函数,执行上班()
的函数。顺序的其他函数也如此。写在这里,更多的就不介绍了,毕竟这一节只是引言。感兴趣的可以跳转这一篇文章,了解一下OpenFOAM中C++有意思的内容。