class test1 { public: virtual void func1() { cout << "test1-func1" << endl; } virtual void func2() { cout << "test1-func2" << endl; } }; class test2 { public: virtual void func2() { cout << "test2-func2" << endl; } virtual void func1() { cout << "test2-func1" << endl; } }; test2 * ptr = (test2 *)&t1; ptr->func1(); 为什么输出test2-func2
时间: 2023-03-30 19:03:18 浏览: 135
功能与测试1
我可以回答这个问题。这段代码是一个简单的 C++ 多态示例,其中有两个类 test1 和 test2,它们都有两个虚函数 func1 和 func2。ptr 是一个指向 test2 类的指针,通过强制类型转换将其指向 test1 类的对象。这样,当调用 ptr 的 func1 函数时,实际上会调用 test2 类的 func1 函数,因为它是虚函数并且在 test2 类中被重写了。而调用 ptr 的 func2 函数时,会调用 test1 类的 func2 函数,因为它在 test1 类中被定义。
阅读全文