1. 多态,输出(考虑析构函数 ) #include<iostream> using namespace std; class A { public: A() { cout<< "A"; } virtual ~A() { cout<< "B"; } void fun() { prt(); } virtual void prt() { cout<< "C"; } }; class B:public A { public: B() { cout<<"D"; } ~B() { cout<<"E"; } void prt() { cout<< "F"; } }; int main( ) { A a,*p1; B b; p1=&a; p1->fun(); p1=&b; p1->fun(); }
时间: 2024-02-10 10:32:29 浏览: 179
c++学习注意点总结
这段代码涉及到了虚函数和多态的知识点,其输出结果为:ACBDFCFBE。
首先,我们分别创建了一个A对象和一个B对象,其中A对象的指针p1指向了a,而B对象的指针p1指向了b。然后我们通过p1指针调用了A类中的`fun()`函数,输出了AC,这是因为`fun()`函数中调用了`prt()`函数,由于`prt()`函数是虚函数,所以会在运行时根据对象的实际类型调用对应的函数,因此输出了C。
接着,我们又通过p1指针调用了B类中的`fun()`函数,输出了BDFCFBE。这是因为B类中的`fun()`函数会调用B类中的`prt()`函数,输出了F。同时,当我们退出程序时,会先调用B类的析构函数,输出了E,然后调用A类的析构函数,输出了B。
因此,最终的输出结果为ACBDFCFBE。
阅读全文