C++基础知识结篇
关于常成员函数:
const double function()和double function()const;很多人可能将他们两个混为一谈了,但是二者并不完全相同。前者是必须保证返回的值是这个常量(注:变量不可),后者是要求你的函数中不涉及改变类的数据成员的值,可以进行输出等,但不可改变数据成员的值。
除了上述关于常函数的论述,还有很多人把静态成员函数和常函数混为一谈,考试也经常进行相关的考试,强调的是常函数是有this指针的。
静态函数、静态数据成员
首先:静态函数是没有this指针的,因为浅层可以理解为this指针就是一个具体的对象,因为静态函数不属于具体的对象,故没有this指针。同样的静态数据成员也不属于对象。关于静态数据成员,调用其有两种方式:一种是通过类名::,一种是对象名.形式。同时必须在类外进行初始化。
虚函数:
背景:
对于虚函数,首先需要明白的是为什么要出现虚函数:
假设有一个基类,含有成员函数A,同时他的派生类中也重新定义了新的A,且基类中的首部与派生类的首部均相同,这样会导致派生类的再次定义将基类的A覆盖了,当我们在主函数中想调用基类的A的话就需要:派生类对象.基类::A(),很显然,当程序较复杂时,这样会降低我们的效率。
出现:
为了解决上述问题,虚函数应运而生,我们在想调用基类的函数时,就可以重新定义一个基类指针,使之指向派生类对象,再次调用A函数,便调用的是基类的函数。很多人可能会说我也可以不将其定义为虚函数,但是运用同样的方法来调用基类的函数! 是的,但是那样没有运用多态性。
综上所述它能很好的消除了二义性。
构造函数调用顺序:
在这个地方先给出大致的顺序:1.基类 2.子对象 3.派生类自身
通过这个例子我们可以清楚的发现这个大顺序。
更细的:
对于子对象之间的构造函数的调用顺序:取决于子对象的声明顺序,跟他的初始化顺序无关。
基类:
取决于在派生类的声明顺序,跟基类的定义顺序和在派生类的初始化顺序无关。
关于const的两个易混淆点:
1.
在这个题中,由于const在name的前边,说明这个是要求地址不变,分析bcd:对于B,重新赋值就相当于改变了地址,对于CD两个运用的动态开辟空间,改变了地址。正确选项A:该选项只是改变了name数组的第三个变量的值,故并没有改变数组的地址。故正确。
2.
对比上下两个题的区别,发现const在此题中的位置发生了改变。他放到了数据类型的前边,这就会使得要求变为p指向的变量不能发生改变!
关于异常处理后系统是否运行:
在抛出异常被捕获后,程序会继续进行!如下例:
测试结果:
本文保留所有权利,版权归河北工业大学梦云智软件开发团队所有。未经团队及作者事先书面同意,您不得以任何方式将本文内容进行商业性使用或通过信息网络传播本文内容。本文作者:郝泽龙
167 声望
15 粉丝
推荐阅读
Springboot实现文件上传和下载
在一些文件存储量很小的工程中,有一些上传文件放置在工程本身的目录下,但是随着文件上传的量越来越大,工程本身所在的文件夹容量会越来越大,不仅打包和部署的效率会降低,工程的启动和运行也会变慢,所以一般...
郝泽龙_HZ赞 2阅读 651
程序员适合创业吗?
大家好,我是良许。从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。每个视频都花了很多时间精力用心制作,欢迎大家关注哦~考虑到有些小伙伴没有看过我的视频,...
良许赞 3阅读 1.2k
比cat更好用的命令!
但 cat 命令两个很重大的缺陷:1. 不能语法高亮输出;2. 文本太长的话无法翻页输出。正是这两个不足,使得 cat 只能用来查看行数不多的小文件。
良许赞 2阅读 646
DBoS 系统说明
程序员TianSong以单片机开发入门,后续又做了 Qt 相关工作,有时间后开始进行 linux 相关的学习,恰巧在二一年十一月份,百问网的韦东山老师进行了三个月的 linux 驱动直播,于是有了开发 DBoS 的念头。
TianSong赞 1阅读 1.2k
【Qt】简单桌面
[链接]简介简单桌面是一款小巧便捷的桌面背景管理软件。由编程爱好者个人开发,不收集使用者个人信息、不连接网络、不弹窗。下载功能支持单静态图片及多静态图片轮播(轮播时间可设置)支持GIF动画背景支持视频背...
TianSong赞 3阅读 2.2k
良许翻天覆地的2022年
大家好,我是良许,新年快乐呀~在我女室友坚持不懈的努力之下,2022年的最后一天我终于被她传染了,阳了~此时的我,正顶着37多度的低烧写下这篇年终总结。2022年,对于大多数人而言,封控是主旋律——不停地核酸,...
良许赞 2阅读 758评论 1
一个Bug让人类科技倒退几十年?
大家好,我是良许。前几天在直播的时候,问了直播间的小伙伴有没人知道「千年虫」这种神奇的「生物」的,居然没有一人能够答得上来的。所以,今天就跟大家科普一下这个人类历史上最大的 Bug 。1. 全世界的恐慌一...
良许阅读 1.4k
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。