首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不调用基类-2的构造函数?

为什么不调用基类-2的构造函数?
EN

Stack Overflow用户
提问于 2019-01-10 11:15:23
回答 1查看 68关注 0票数 1

在以下代码中。为什么不调用base2类的构造函数?任何帮助都很感激。

我试图与“钻石问题”联系起来,但仍不清楚。

代码语言:javascript
复制
#include <iostream>

using namespace std;

class base {
public:
     base(){print1();};

     ~base(){std::cout << "Destructor of base1" << std::endl;};

     void print1(void) const
     {
         std::cout << "From print1 function" << std::endl;
     }
};

class base2:public base {
public:
     base2(){print1();};

     ~base2(){std::cout << "Destructor of base2" << std::endl;};

     void print1(void) const
     {
         std::cout << "From print2 function" << std::endl;
     }
};

class test: virtual public base2, public base {
    int a;
public:
    int b;
    test(){b = 0; print();};

    ~test(){ std::cout << "Destructor of test" << std::endl;};

     void print(void) const
     {
         //print1();
         //a++;
         std::cout << "From print function" << std::endl;
     }
};

int main()
{
    const test *t1 = new test();
  //  t1->print();
    delete t1;
    //cout<<"Hello World: " << t1->b;

    return 0;
}

从print1函数

从打印函数

试验破坏者

base1的破坏者

base2的破坏者

base1的破坏者

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 11:30:06

解决了编译问题!如果我尝试在联机编译器中使用base2类的构造函数而没有调用,并且如果我试图在本地环境中使用g++编译器运行相同的构造函数,那么工作得很好。得到预期的输出。谢谢StoryTeller。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54127492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档