C++基础知识结篇

关于常成员函数:

const double  function()和double function()const;不少人可能将他们两个混为一谈了,可是两者并不彻底相同。前者是必须保证返回的值是这个常量(注:变量不可),后者是要求你的函数中不涉及改变类的数据成员的值,能够进行输出等,但不可改变数据成员的值。

除了上述关于常函数的论述,还有不少人把静态成员函数和常函数混为一谈,考试也常常进行相关的考试,强调的是常函数是有this指针的。git

静态函数、静态数据成员

首先:静态函数是没有this指针的,由于浅层能够理解为this指针就是一个具体的对象,由于静态函数不属于具体的对象,故没有this指针。一样的静态数据成员也不属于对象。关于静态数据成员,调用其有两种方式:一种是经过类名::,一种是对象名.形式。同时必须在类外进行初始化。github

虚函数:

背景:

对于虚函数,首先须要明白的是为何要出现虚函数:segmentfault

假设有一个基类,含有成员函数A,同时他的派生类中也从新定义了新的A,且基类中的首部与派生类的首部均相同,这样会致使派生类的再次定义将基类的A覆盖了,当咱们在主函数中想调用基类的A的话就须要:派生类对象.基类::A(),很显然,当程序较复杂时,这样会下降咱们的效率。

出现:数组

为了解决上述问题,虚函数应运而生,咱们在想调用基类的函数时,就能够从新定义一个基类指针,使之指向派生类对象,再次调用A函数,便调用的是基类的函数。不少人可能会说我也能够不将其定义为虚函数,可是运用一样的方法来调用基类的函数!  是的,可是那样没有运用多态性。
综上所述它能很好的消除了二义性。

构造函数调用顺序:

在这个地方先给出大体的顺序:1.基类 2.子对象 3.派生类自身QQ图片20200610161524.png网络

经过这个例子咱们能够清楚的发现这个大顺序。
更细的:函数

对于子对象之间的构造函数的调用顺序:取决于子对象的声明顺序,跟他的初始化顺序无关。

基类:测试

取决于在派生类的声明顺序,跟基类的定义顺序和在派生类的初始化顺序无关。

关于const的两个易混淆点:

1.
QQ图片20200610162111.png
在这个题中,因为const在name的前边,说明这个是要求地址不变,分析bcd:对于B,从新赋值就至关于改变了地址,对于CD两个运用的动态开辟空间,改变了地址。正确选项A:该选项只是改变了name数组的第三个变量的值,故并无改变数组的地址。故正确。
2.
QQ图片20200610162437.png
对比上下两个题的区别,发现const在此题中的位置发生了改变。他放到了数据类型的前边,这就会使得要求变为p指向的变量不能发生改变!this

关于异常处理后系统是否运行:

在抛出异常被捕获后,程序会继续进行!以下例:

QQ图片20200610185305.png
测试结果:
QQ图片20200610185323.pngspa

本文保留全部权利,版权归河北工业大学梦云智软件开发团队全部。未经团队及做者事先书面赞成,您不得以任何方式将本文内容进行商业性使用或经过信息网络传播本文内容。本文做者:郝泽龙3d

相关文章
相关标签/搜索