【发布时间】:2022-01-23 13:09:23
【问题描述】:
恐怕这是不可能的:
class A {
public:
A(){}
virtual string s() = 0
string s(int i) {
auto j = this->s();
... modify j ...
return j;
};
class B: public A{
public:
B() : A() {}
string s() override {
return string("Class B"); // just some string
}
};
换句话说:你不能有两个成员函数变体,只有一个是虚拟的?这个观察正确吗?
【问题讨论】:
-
为什么你认为你不能?请发布minimal reproducible example,说明您的问题所在。
-
@stustd 你可能在一个类中有同名的虚函数和非虚函数。
-
你做了什么观察?您发布的代码会导致一些编译器错误,但与
virtual或override无关。 -
@Vlad 确实,这就是问题所在:是否可以在一个类中拥有同名的虚拟和非虚拟函数(尽管它们的签名显然不同)?
-
@stustd 请在下面查看我的答案。
标签: c++ class scope virtual using-declaration