class C {
public:
virtual C f1() {
return C(); }
virtual C* f2() {
cout << 1 << endl;
return new C();
}
};
class D : public C {
public:
virtual D f1() override {
return D(); }
};
检查f1的重载是明显有问题的,如下。因为这玩意不是个指针。
返回类型与重写虚拟函数 “C::f1” 的返回类型 “C” 既不相同,也不协变C/C++(317)
class D : public C {
public:
virtual C* f2() override {
cout << 2 << endl;
return new C();
}
virtual D* f2() override {