gpt4 book ai didi

C++ - 纯虚函数的参数

转载 作者:行者123 更新时间:2023-11-30 03:43:02 25 4
gpt4 key购买 nike

如果我有课说

class Base {
public:
virtual void func() = 0;
};

这是另外两个类的基础

class DerivedA1 : public Base {
public:
virtual bool func(string command);
};

class DerivedB1 : public Base {
public:
virtual void func();
}

class DerivedA2 : public DerivedA1 {
public:
bool func(string command); //This one implements it differently
}; //its base class.

以上是否允许?我声明的 func() 没有参数,但随后我将它与参数一起使用。我的代码中有类似的情况,但我无法发布,因为这是学校作业的一部分,并且出现类似于

error: no matching function for call to Base::fucn(std::string&)
note: candidate is: virtual bool Base::move();
note: candidate expects 0 arguments, provided 1

我希望 func() 在其不同的派生类中以不同的方式使用。我该如何解决这个问题?

最佳答案

DerivedA1::func(string) 隐藏 Base::func()。这是允许的,但不会覆盖 Base::func 的行为。 clang 会警告你,因为它几乎总是一个错误

class DerivedA1 : public Base {
public:
virtual bool func(string command);
};

这很好:

class DerivedB1 : public Base {
public:
virtual void func();
}

这将覆盖 DerivedA1::func(string)。仅存在于 DervivedA1 接口(interface)或从它派生的东西上的虚函数。 Base

上不存在
class DerivedA2 : public DerivedA1 {
public:
bool func(string command); //This one implements it differently
};

关于C++ - 纯虚函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36377233/

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