zoukankan      html  css  js  c++  java
  • C++中的默认构造函数

    >> Compiler何时自动生成Default Constructor

    前文说到C++中的默认构造函数,那我们看看什么时候会生成default constructor。

    1. 类成员中有成员是类对象,并且该成员的类含有默认构造函数

    C++编译器会帮你 给这个类也生成一个默认构造函数,用来调用其成员对象的构造函数,完成该成员的初始化构造。需要注意的是,如果这个成员的类也没有给出默认构造函数,那么 C++编译器也不会帮你生成该类的默认构造函数。

    所以对于POD类型的struct,我们可以认为它就是C-Style struct。

    2. 这个类的基类有默认构造函数

    C++编译器也会帮你生成该派生类的默认构造函数,以调用基类的默认构造函数,完成基类的初始化。

    如果基类没有提供这个默认构造的函数,那么C++编译器也不会为派生类生成默认的构造函数。

    3. 类中存在虚函数,那么C++编译器会为你生成默认构造函数,以初始化虚表(虚函数表vftable)。

    4. 存在虚基类,那么C++编译器会为你生成默认构造函数,以初始化虚基类表(vbtable)。


    >> C++ 11 中的Defaulted Constructor

    C++ 11增加了一个default关键字

    struct SomeType
    {
    SomeType() = default; //The default constructor is explicitly stated.
    SomeType(OtherType value);
    };



  • 相关阅读:
    初賽
    SA
    高斯-约旦消元法
    AC自动机
    KMP
    关于scanf
    网络流
    常用SQL语句
    Java开发中的23种设计模式详解(转)
    generatorConfig.xml
  • 原文地址:https://www.cnblogs.com/piaoger/p/2365499.html
Copyright © 2011-2022 走看看