openfoam学习心得-dynamic mesh_day3

openfoam学习心得-dynamic mesh_day3

经过一个星期的了解,笔者发现自己要做的是自定义pointPatchFields,这与自定义边界条件有异曲同工之妙,遂笔者重读C++,对一些基本概念做些总结,方便以后参考!
万物皆对象、指针与内存:
int a–与其说a是整型变量不如将a理解为int类型的实例化对象,其可以调用int类的一些方法,如operater+();是对象就要占内存–a又可以称为内存名,通过点运算符来访问类成员变量与方法,内存还有地址,指针是对象,其单独占一块内存,内存中的是另外一个对象的地址,通过->来访问该对象所拥有的方法。

输入与输出:
把c++想成一个单独的东西、键盘、显示器、文件等这是另外一些东西,c++试图与这些东西进行交互–cout–输出都显示器,cin–从键盘中输入,ofstream对象–输出到文本文件,ifstream对象–从文本文件中输入,顺着此思想,c++还可以与别的成分进行交互,前提是均需要进行链接。

函数与类、const与指针、引用:
c++其实是由一个个函数块组成的,主程序main其实也就是一个函数,函数可以创建函数模板,类可以创建类模板,函数是单独储存在一块内存中,当运行时遇到函数名时将跳转到储存函数的内存处,去执行函数,而内联函数则不然,其在编译的时候直接把函数copy过来,所有执行的时候就不用跳转了,加快速度。
类会隐式定义复制运算符、赋值运算符(也就是=)、默认构造、当函数按值传递类对象时,和返回类对象时,均会调用复制构造函数,所以最好按引用传参和返回。
引用、指针、内存名(对象名)都可以操纵指定内存处的对象,我们不希望引用和指针来改变对象的值,此时便可以在最前面加const,如const int *

external、static声明、this指针:
在函数之外定义的变量为全局变量,static int a表示此变量只能在当前文件中使用,int a便是可以在另外的文件中使用,只不过该文件要加入声明external int a;this实际上是一个指针,其指向调用对象,注意:类成员函数其参数可以传入另外一个同类对象,此时运用this指针便可以与调用对象做比较。

类继承、虚函数、虚基类:
在类成员函数中,类对象可以访问类的私有成员,在成员函数之外,类对象不可访问,子类公有继承可以访问类的公有函数,但不可访问私有变量,可以访问受保护变量。基类的引用或指针可以访问派生类–但是此引用或者指针只可访问基类的变量–可以理解为派生类对象里面隐含一个基类对象。此多态(向上强制转换)结合虚函数使用,如果基类中定义的方法为虚方法,则基类指针和引用按指向的对象(可指向子类对象)来选择方法,如果不是虚函数,则永远只访问基类方法,子类中可以直接调用基类方法,子类对象在调用方法时优先搜索子类方法,随后搜索父类方法。故而基类的虚构函数一般用虚的,这样基类引用和指针如果指向子类使用的将是子类的虚构函数,而子类的虚构是会调用父类的虚构的。包含一个纯虚函数(=0)的类便是抽象类-ABC纯虚函数可以没有定义,虚基类与多重继承相关,解决二义性问题,菱形继承会生成两个基类对象,此时存在二义性,而虚基类或叫虚继承可以合二为一,不过构造函数不在具有传递性。

new运算符:
在堆区分配内存,此时就不存在内存名了,只能通过指针来操作该对象,使用delete来释放堆内存,如果不释放,即时位于栈区的指针被回收,堆区分配的内存也不会消失,这样会造成内存泄漏,析构函数主要就是解决这个问题的。

C++中的内存管理果然奇妙,学C++还是得多往内存方面考虑!

你可能感兴趣的:(openfoam学习心得-dynamic mesh_day3)