zoukankan      html  css  js  c++  java
  • 派生类在构造对象时,先构造基类对象,再构造派生类自身的成员

    #include <iostream>

    using namespace std;

    struct A

    {

      A(){cout << "A:"<< endl;}

    };

    struct B : public A

    {

      B(){cout << "B:" << endl;

    };

    struct C : public B

    {

      C(){cout << "C:" << endl;

      B b;

      A a;

    };

    int main()

    {

      C c;

      return 0;

    }

    开始猜测运行结果为:A-B-A-A-B-C;因为要先将C类中的各元素的对象都构造完成后,再去构造类C;

    正确答案:A-B-A-B-A-C;

    正解:由于b,a都是class C的成员,故应该在最后构造自身的成员,先构造C的基类B,在构造B前,先构造B的基类A,即先输出A-B,构造完后,再构建成员b,输出A-B,然后再构建a,输出A,最后对象c构建成功输出C,即A-B-A-B-A-C

  • 相关阅读:
    Chp18: Hard
    内存泄漏 和 内存溢出
    Chp4: Trees and Graphs
    trie树--详解
    Tries
    Comparable & Comparator
    memory leak
    8个月从CS菜鸟到拿到Google Offer的经历+内推
    Word Ladder II
    Java垃圾回收机制
  • 原文地址:https://www.cnblogs.com/wickedboy237/p/3017581.html
Copyright © 2011-2022 走看看