C++-----深度探索C++对象模型-第五章-构造、析构、拷贝语意学(二)

本文深入探讨C++对象模型,讲解构造、析构、拷贝语意的重点。包括:1) 析构函数的静态决议;2) 虚基类构造调用机制;3) 构造函数中虚函数的调用方式;4) 虚函数指针的设定时机;5) 拷贝构造与赋值操作符的使用策略,以及析构函数的执行流程和注意事项。文章强调在何时需要自定义拷贝赋值运算符,并提示注意继承体系对构造和拷贝成本的影响。
摘要由CSDN通过智能技术生成

1、虽然一个类的析构函数是虚函数,但是其调用操作员静态的决议出来的。

2、构造函数的函数本体必须条件式的测试传进来的参数,然后决定调用或不调用相关的虚基类构造函数。由最底层的派生类进行虚基类的构造函数的调用,这种机制会压制中间层级类中构造函数对虚基类构造函数的调用。(菱形继承,最底层的派生类会调用最上层虚基类的构造函数,而在调用中间两个基类构造时,将参数设置为flase,这样中间两个基类的构造函数不再调用最上层虚基类的构造函数。)

3、在一个类的构造函数中调用一个虚函数,其函数实例应该是在这个类中有作用的那个。

4、如果在构造函数中调用虚函数,那么这个虚函数应该是以静态的方式决议,根本一点的解决办法:在执行一个构造函数时,必须限制一组虚函数的候选名单,这个候选名单由虚函数指针控制。

5、虚函数指针在基类构造函数调用操作之后,但是在程序员供应的代码或是成员列表初始化中成员初始化操作之前。

6、构造函数的执行算法通常如下:

    1)在派生类构造函数中,所有虚基类以及上一层基类的构造函数被调用。

    2)上述完成之后,对象的虚函数指针被初始化,指向相关的虚函数表。

    3)如果有成员列表初始化,在构造函数体内展开,这必须在虚函数指针设定之后才做,以免有一个虚函数被调用。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值