gpt4 book ai didi

c++ 有歧义的双重非虚函数继承

转载 作者:搜寻专家 更新时间:2023-10-31 01:12:30 25 4
gpt4 key购买 nike

假设我有两个类:

struct a
{
void test();
};

struct b
{
void test();
};

现在让我们继承这些类:

class c : public a, public b
{
};

调用 c::test() 会产生错误,因为 class aclass b 有相同的函数 void test(),现在我的问题是:

是否可以继承那些(非虚拟!)函数,并且当 c::test() 被调用时两者都被执行?

最佳答案

为此,您需要在c 中实现void test(),并调用这两个方法。没有自动的方法来做到这一点。

class c : public a, public b
{
public:
void test() {
a::test();
b::test();
}
}

但是,我强烈建议您不要在派生类中重新实现非虚函数。问题是下面的代码会悄悄地调用不同的函数,即使它们对同一个对象进行操作:

   c* p1 = new c();
a* p2 = p1;
p1->test();
p2->test();

关于c++ 有歧义的双重非虚函数继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com