两道C++题目

    技术2022-05-20  39

    #include <iostream> #include<stdio.h> using namespace std; class A{ public: A(){printf("A/n");} ~A(){"del A/n";} }; class B{ public: B(){printf("B/n");} ~B(){"del B/n";} }; class C:public A,public B{ public: C(){printf("C/n");} ~ C(){printf("del c/n");} }; int main() { A *a = new C(); delete a; return 0; } 

     

    输出:

    A

    B

    C

    del A

     

     

    /************************/

    class A{ public: void f(){printf("A/n");} }; class B:public A{ public: virtual void f(){printf("B/n");} }; int main() { A* a = new B(); a->f(); return 0; }  

    输出:

    A

     

    这道题令人大意的地方在于virtual修饰在派生类B的成员函数里面,所以用基类指针指向派生类的实例时,调用的还是基类版本的成员函数。

     


    最新回复(0)