zoukankan      html  css  js  c++  java
  • 67、类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一 些?

    1) 赋值初始化,通过在函数体内进行赋值初始化;列表初始化,在冒号后使用初始化列表进行初始化。

    这两种方式的主要区别在于:

    1.对于在函数体中初始化,是在所有的数据成员被分配内存空间后才进行的。

    2.列表初始化是给数据成员分配内存空间时就进行初始化,就是说分配一个数据成员只要冒号后有此数据成 员的赋值表达式(此表达式必须是括号赋值表达式),那么分配了内存空间后在进入函数体之前给数据成员 赋值,就是说初始化这个数据成员此时函数体还未执行。

    2) 一个派生类构造函数的执行顺序如下:

    ① 虚拟基类的构造函数(多个虚拟基类则按照继承的顺序执行构造函数)。

    ② 基类的构造函数(多个普通基类也按照继承的顺序执行构造函数)。

    ③ 类类型的成员对象的构造函数(按照初始化顺序)

    ④ 派生类自己的构造函数。

    3) 方法一是在构造函数当中做赋值的操作,而方法二是做纯粹的初始化操作。我们都知道,C++的赋值 操作是会产生临时对象的。临时对象的出现会降低程序的效率。

  • 相关阅读:
    寒假学习记录07
    寒假学习记录06
    寒假学习记录05
    寒假学习记录04
    寒假学习记录03
    寒假学习记录02
    寒假学习记录01
    河北省重大技术需求征集系统(13)
    学习进度(4)
    学习进度(3)
  • 原文地址:https://www.cnblogs.com/crbhf/p/14978987.html
Copyright © 2011-2022 走看看