派生类中虚函数原型的()?
int main()
{
class A
{
public:
virtual void f() { cout << 1 << endl; };
};
class B : public A
{
public:
virtual void f() override { cout << 2 << endl; }
};
class C : public A
{
public:
virtual string f(const int a = 0, double b = 0.0) { return string("test"); }
};
A * a = new B();
A * b = new C();
C c;
a->f(); //2
b->f(); //1
cout << c.f() << endl; //test
delete a, b;
a = nullptr;
b = nullptr;
return 0;
}
//c++11后请用override显式覆盖基类同名方法实现多态 此时子类方法返回类型和形参表必须和基类的一致 不然编译不过
//但是不用override时同名的虚函数原型是可以返回类型
//不同形参表不同的 此时编译器将当成一个新的独立的函数处理 所以这题不严谨