如果在基类中定义了虚函数,那么所有继承的类相应的函数都为虚函数,不论添加virtual关键字与否。 #include <iostream> using namespace std; class BaseClass { public: BaseClass(){}; virtual ~BaseClass(){}; protected: //virtual void Abstracted() = 0; public: virtual void print(){cout << "This is Base"<<endl;} }; class DerivedClass: public BaseClass { public: DerivedClass(){}; virtual ~DerivedClass(){}; protected: virtual void Abstracted(){}; void print(){cout << "This is derived"<< endl;} }; class B: public DerivedClass { public: B(){}; virtual ~B(){}; protected: void print(){cout<<"this is B"<<endl;} }; int main() { BaseClass myClass; DerivedClass derived; B b; BaseClass *p1 = &myClass; BaseClass *p2 = &derived; BaseClass *p3 = &b; p1->print(); p2->print(); p3->print(); } 结果: This is Base This is Derived this is B