I'm afraid this is not possible:
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
}
};
In other words: you cannot have two member functions variants only one of which is virtual? Is that observation correct?