- 博客(13)
- 收藏
- 关注
原创 C++高级程序员必经之路-继承(初级篇)
实际上不是,在继承中,如果子类和父类出现重名方法,那么会优先调用子类的方法。在实际的开发中,我们一般不会这样去写,因为C++提供了更变态的特性,那就是多态,多态可以使接口进行完全覆盖,也可以让方法在合适的时机被调用,完全不需要显示指定类名限定。那么如果我稍稍修改一下呢?答案我会在下次高级篇进行公布,好的,这次的内容就到此结束了,希望各位知其然知其所以然,我是程序员萧炎,一位资深C++程序员,我们下次再见。那么序言就不介绍了,不太理解继承概念的可以看看我之前写的继承入门篇,好的,我们废话不多说,直接发车。
2025-01-06 17:18:11
279
原创 C/C++高级程序员和必经之路-何为栈(详解)
这种就很危险,第二种就是函数嵌套或者函数递归造成的,函数中有较多的变量,一层一层的调用,栈中的内存没有得到释放的情况下继续调用下一个函数,最终导致栈溢出。一般情况下第二种最常见。所谓的栈就是计算机的运行内存,我们一般的栈内存是2MB左右,这是家庭常用的电脑配置,而我们C/C++语法中,所有使用的变量都是会有内存占用的,其中1KB = 1024字节,1MB = 1024KB。关于栈,之前我是写过文章的,但是考虑到文章质量和图片没有很好的展示出来,所以我决定重构一篇栈的文章,整篇文章格局之高,只给有缘人拜读。
2024-11-29 10:43:20
261
原创 MITK实战篇-MITK切片导航
在实际工作当中,为解决QmitkAbstractMultiWidget窗口视图的2D视窗显示切面问题,凭借以往的经验,第一时间想到了BaseRenderer渲染器类,PlaneGeometry切片类,SliceNavigationController切片导航类。首先,切片存在于RenderWindow渲染器窗口中的渲染器对象BaseRenderer中,首先必须先获取到BaseRenderer对象,由于是组合关系,这里面所包含的是指针成员。至此,整个切片导航的操作就完成了,由于工作性质无法提供更多详细代码。
2024-11-06 11:25:19
837
原创 数据结构链表之企业级应用-Linux内核双向链表实战
那么有了这个宏之后呢,就可以完美解决找不到结构体对象内存地址的问题了,但是请注意,由于LinuxNode*n结构体成员变量是指针,所以使用的时候一定要搞清楚内存,必须掌握熟练二级指针的水平,否则玩不来的。实际上,Linux内核的双向链表是利用了数据与承载数据的结构分离的模式,所以才会设计成这个样子,那么这个模式是怎么样的呢?最后,大家可以试一下,看看能不能玩起来,如果玩不起来的话可以评论区讨论一下,我会统一做解答,我是程序员玉无涯,一位资深程序员,我们下次见。那么我们的Linux内核双向链表是怎么做的呢?
2024-10-08 17:54:06
894
1
原创 MITK实战篇-VTK相机交互
当然,Qt的鼠标事件一样也是在切换数据节点之后才触发,但是,当相机视角进行切换时,再通过重写鼠标点击事件,移动事件,释放事件。其中CustomInteractor类是我继承vtkRenderWindowInteractor后重写的类,由于鼠标右键的交互操作被禁用,所以只能人为计算并调用接口,对相机视角进行操作,达到数据节点的视角切换目的。最后跑流程的时候,发现鼠标在2D窗口视图也会影像3D窗口的交互,通过拿到3D窗口的大小,与鼠标当前坐标点进行计算,限制3D窗口的交互范围,至此问题全部解决。
2024-09-25 13:59:43
676
原创 C/C++高级程序员必经之路-继承(入门篇)
以上代码是一个很基础的继承例子,这个例子是儿子继承了父亲的资产,他自己也有一定财富,所以按照现实角度一般情况来说,Son类可以使用父亲给他的钱(注意:我这里的继承使用了public),所以我们就可以使用子类对象Son的实例来调用getMoney()函数,以此来查看和使用你老爹的资产。那么在C++的继承中,这种情况是怎么表示呢?那么使用继承就可以在一定程度上解决以上问题,由于继承并没有想的那么简单,其中菱形继承,虚继承,多态等都是高阶用法,入门篇就说继承的基本用法,好了话不多说,赶紧发车。
2024-07-23 14:59:00
669
2
原创 C/C++高级程序员必经之路-何为堆(详解)?
看过我文章的都知道,我讲东西呢都是比较深入的,既然要讲堆,首先就要把C/C++的特性稍微说一下,作为一名合格的C程序员,如果你不知道堆,那么你是失败的。那么指针和堆的关联用法或者稍微复杂点的都是必须掌握的,更何况我写的这个模拟代码,代码量才多少呢?我们都知道,C/C++都是以指针操作内存的,可是一般情况下,栈区是没有多少内存的,也就2MB左右(一般的笔记本或家用型电脑),而且栈区内存也不是自由调配的,他只能操作已经存在于栈区的变量,而栈区中变量的生命周期一般由函数决定,所以用起来并不方便。
2024-07-11 16:00:27
845
1
原创 C++11中强制类型转化详解(下)
我们都知道,C++面向对象编程中,最核心的部分就是基类和派生类之间的爱恨情仇,比如最基本的继承,还有多继承,虚继承,多态等特性,其中最重要也使用最广泛的也是多态,了解过架构的朋友都知道23种设计模式中的常用设计模式(除了单例),大部分都需要使用多态来完成,最根本的原因是因为派生类可以转化为父类进行使用,再由父类转化为需要的派生类,这样就能大大降低代码的耦合度,提高内聚性。是不是很神奇,只要使用了我们的动态转化进行内部处理,就可以轻易解决这个问题,会让多态的应用场景变得更加的方便。当有Cat的时候怎么做呢?
2024-07-05 17:02:42
506
原创 C++11中强制类型转化详解(上)
显示转化就是强制类型转化,上面我们将不同的指针类型和常量整型转化为了void*地址,这是隐式转化做不到的。第一种:static_cast(转化对象)静态类型转化(温和类型转化),这种类型转化是比较安全的转化方式,C语言的隐式转化都可以使用static_cast进行替代,C语言进行隐式转化时会容易丢失数据,如果程序员不知道的情况下,这个问题也是比较严重的。所以C++11增加了四种强制类型转化方式供开发时使用,其中两种转化方式涵盖了C语言的所有转化,包括强制类型转化以及隐式转化等。
2024-06-18 09:08:57
2406
原创 高级程序员的必经之路-指针(中级篇,二级指针详解)
二级指针作用其实概括起来并不难,一句话就是用来储存一级指针的地址,解引方式和一级指针相同,但是需要注意的是一层解引是得到一级指针储存的内存,二级解引才是访问一级指针所指向内存的数据,有点绕对吗?其实我们只要知道一个道理即可,任何指针,哪怕十级指针也是变量,那么变量就要遵守变量的规则,堆,栈等等,学习从来不是散乱无章的,而是系统的,希望大家可以有个系统的学习。最后,请大家思考,既然二级指针保存的是一级指针的地址,那么一级指针又是变量,那么他的地址也是整数,所以二级指针和一级指针所保存的类型相同?
2023-12-21 20:10:24
1893
1
原创 高级程序员的必经之路-指针(入门篇,一级指针)
好久不见,甚是想念。hello,大家好我是玉无涯。没错这个男人又回来了。好了,废话不多说今天我们来讲一讲C/C++中语法的核心内容之一指针。由于指针难度较大,我把它分为三个部分,分别为入门篇,中级篇,高级篇。如果文章好评度高的话我还会再出一个终极篇。好了,接下来我要开始表演了。...
2022-07-09 23:39:35
290
原创 关于主函数为什么要写return 0,但是在一般的程序中不写却不影响程序的使用
首先要搞清楚这个问题就要知道函数为什么会存在返回值,由于函数的返回值由函数前面的类型所决定,所以就要知道main函数的类型一般是什么,在一些课程以及教学当中main函数前面的类型都是void,但是这个写法并不规范,规范的写法师int main,int作为一个整形只能返回一个整形,所以就不会存在字符型以及浮点型,但是为什么是返回0而不是别的数呢。有以下两点 1.按照业界人事中的潜规则返回0说明程序是成功运行状态,而返回别的数则是失败,但是这种说法是没有任何道理的,只是人文规定,习惯而已。 2.这个就是重点,在
2022-03-13 15:58:35
6268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人