计算机公开课笔记和课: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