Are only virtual methods overridden
本问题已经有最佳答案,请猛点这里访问。
我试图理解C++中的EDOCX1 0和EDOCX1 1个函数。我知道在派生类中,虚方法被派生类中给定的实现重写。
下面是我用来测试这个的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> using namespace std; class Base { protected: int a; public : virtual void modify () { a=200; } void print () { cout<<a<<" "; } }; class Derived : public Base { int b; public : void modify() { a=100; b=10; } void print () { cout<<a<<"\t"<<b<<" "; } }; int main () { Base b; b.modify (); b.print (); Derived d; d.modify (); d.print (); return 0; } |
输出:
1 2 | 200 100 10 |
这意味着
我的问题:
那我们为什么需要虚拟方法呢?
在代码示例中考虑这种情况:
1 2 3 | Base* b = new Derived(); b->modify(); b->print(); |
尽管