#include<iostream> using namespace std; class B { public: virtual void show() { cout << "Base" << endl; } }; class D :public B { public: void show() { cout << "Derive" << endl; } }; void fun(B& ref) { ref.show(); } int main() { D obj; fun(obj); return 0; }
时间: 2024-01-06 08:05:30 浏览: 77
这是一个简单的 C++ 程序,它定义了两个类 B 和 D。类 B 是一个基类,其中有一个虚函数 show(),类 D 继承自类 B,重写了 show() 函数。在程序的 main 函数中,创建了一个 D 类对象 obj,并将其传递给一个函数 fun(),该函数接受一个 B 类型的引用。在 fun() 函数内部,调用了 ref.show(),由于 obj 是一个 D 类型的对象,所以会调用 D 类中的 show() 函数,输出 "Derive"。
这个程序主要演示了 C++ 的多态特性,即通过一个基类类型的指针或引用调用一个虚函数时,会根据实际对象的类型来确定调用哪个函数。在这个例子中,fun() 函数接受的是一个 B 类型的引用,但实际上传入的是一个 D 类型的对象,所以会调用 D 类中的 show() 函数。这种机制可以让我们以相同的方式处理不同的对象,从而简化程序的设计和实现。
阅读全文