贴两个网址备忘一下

计算机公开课笔记和课:https://it-ebooks.flygon.net/mooc/

os笔记:https://blog.dingbiao.top/

收藏资源从未停止,学习三天打鱼两天半筛网。

前段时间因为不懂继承的具体用法,

子类继承父类的时候,是重新实例化了一份父类的实例来用。

当我说出这句话的时候,就被朋友拒绝讨论了。也就没有后续的讨论了。

 

后来用c++测试了一下,这句话是错的,因为我在追踪构造器的时候并没有生成新的父类实例,只是调用了父类的构造函数。

这里我就知道了实例化和使用构造函数不是一个意思,我原来一直以为是一个意思。

也就是说,先子类字段初始化 ,然后父类字段初始化 ,再执行父类构造函数 ,最后执行子类构造函数。

不过我还是有疑惑的,为什么要先调用父类的构造函数?以及类和对象在内存中的位置???

 

 

这里我的猜想就是因为继承有着拓展的意思,在基类上拓展,所以就先构造了父类。不过这种说法对我来说并没有说服力,因为如果先调用子类的构造再调用父类的构造看上去也没问题,当然具体调用哪个构造。(实例化后,会在堆和栈中都会产生数据,栈中是指向对象的指针)

对象和一个类有着千丝万缕的关系,有人说只有在对象实例化的时候才会分配内存。但是这句话我觉得很笼统,看着内存管理这么庞大的知识体系望而却步。。。虽然跟网络知识比起来少了很多。。。

 

今日份debug未果。

 

其实在遇到一些问题时,很难展开讨论和解决,带着问题会被其他讨论者排斥,最好的做法只能是自己消化,找错误。不会也没办法。。。。。。

fuck,找本书瞅瞅。

https://docs.microsoft.com/zh-cn/cpp/cpp/inheritance-cpp?view=vs-2019

posted @ 2020-08-30 02:04  Smah  阅读(237)  评论(0编辑  收藏  举报