覆盖在祖父母的构造函数中调用的祖父母的虚拟方法

tuty_fruity

我在我的C ++代码上遇到了麻烦..

class GrandParent {
public:
    GrandParent() 
    { 
        printMe(); 
    }

    virtual void printMe() 
    {
        std::cout << "GrandParent: printme" << std::endl;
    }
}

class Parent : public GrandParent {
public:
    Parent(){}
    virtual void printMe()
    {
         std::cout << "Parent: printMe!" << std::endl;
    }
}

class Child : public Parent {
public:
    Child(){}

    void printMe()
    {
         std::cout << "Child: printMe!" << std::endl;
    }
}

int main()
{
     Child *p = new Child();
     delete p;
}

当我运行此代码时,它将打印“ GrandParent:printMe”。我的目标是打印“ Child:printMe!”。覆盖printMe有什么问题吗?

巴里

您尝试做的事是不可能的。GrandParent的构造函数时,Child已构造和初始化对象的唯一部分是该GrandParent部分-包括vtable。也就是说,当您调用时printMe(),条目将为GrandParent只有在Child构造之后,的vtable条目printMe()才会更新为指向Child::printMe

请注意,C ++可以像这样工作。如果Child::printMe 曾经被调用过,那么您将在一个尚未构造的对象上调用成员函数。没有任何好处。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“覆盖”构造函数并调用祖父母构造函数

来自分类Dev

我如何调用祖父母的构造函数(因为未定义父母的构造函数)?

来自分类Dev

从子元素覆盖祖父母的css

来自分类Dev

从孙子类调用父类构造函数,调用父代或祖父母构造函数?

来自分类Dev

Python-如何避免调用祖父母构造函数(多重继承)

来自分类Dev

使用祖父母块

来自分类Dev

访问祖父母的变量

来自分类Dev

SQL Select祖父母

来自分类Dev

在孩子的祖父母或外祖父母中建立父节点。XSL

来自分类Dev

如何覆盖父类的init方法,并使用super调用祖父母的init,而无需编辑父类?(python 3)

来自分类Dev

使用jQuery load()函数获取元素的祖父母

来自分类Dev

祖父母组件未将参数传递给函数

来自分类Dev

QPushButton附加到祖父母

来自分类Dev

Angular指令隐藏元素的“祖父母”

来自分类Dev

git rebase与祖父母的分支

来自分类Dev

xpath查找元素的祖父母

来自分类Dev

使用nltk查找祖父母节点

来自分类Dev

获取节点的祖父母的名称

来自分类Dev

在子代的祖父母中维护父节点。XSL

来自分类Dev

如何从Less的子类中向祖父母施加条件

来自分类Dev

如何在Scss中引用祖父母?

来自分类Dev

调用祖父母方法而不通过Mixin执行父方法

来自分类Dev

调用祖父母方法而不通过Mixin执行父方法

来自分类Dev

为什么通过从祖父母类中调用$ this-> title导致致命错误?

来自分类Dev

使DIV达到祖父母高度的100%,同时也拉伸祖父母的宽度

来自分类Dev

获取特定孩子的父母和祖父母

来自分类Dev

Flex div继承祖父母的高度而不是父母的高度

来自分类Dev

C ++继承-将父母更改为祖父母

来自分类Dev

使用快捷方式选择父母和祖父母

Related 相关文章

热门标签

归档