Мне было интересно, можно ли переопределить только одну функцию в классе, не создавая совершенно новый класс.
Я бы хотел bObj1.foo();
вывести "foo!" и bObj2.foo()
для вывода «foo?», но в настоящее время они оба выводят «foo!».
#include <iostream>
using namespace std;
class B {
public:
virtual void foo() { cout << "foo!" << endl; }
};
class A {
public:
B f();
};
B A::f() {
B bObj;
return bObj;
}
class C : public A {
};
int main()
{
A aObj;
B bObj1 = aObj.f();
bObj1.foo(); // "foo!"
C cObj;
B bObj2 = cObj.f();
bObj2.foo(); // "foo?"
}