当前位置: 首页 > 文档资料 > OpenFOAM 编程入门 >

C++

优质
小牛编辑
120浏览
2023-12-01

那么什么是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分量就是vecshiliang的成员。在随后的介绍中,你还会接触到私有成员和公有成员的含义。

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++有意思的内容。