有关虚函数通过基类指针或基类引用实现动态多态性,求指教
示例37:阅读下面程序,写出输出结果。#include <iostream> // 编译预处理命令
using namespace std; // 使用命名空间std
class A
{
public:
virtual void Show1() const { cout << "A" << endl; } // 输出信息
void Show2() const { cout << "A" << endl; } // 输出信息
};
class B: public A
{
public:
void Show1() const { cout << "B" << endl; } // 输出信息
void Show2() const { cout << "B" << endl; } // 输出信息
};
void Fun1(A obj) { obj.Show1(); } // 定义Fun1()
void Fun2(const A &obj) { obj.Show1(); } // 定义Fun2()
int main() // 主函数main()
{
B obj; // 定义对象
A *p = &obj; // 指针
p->Show1(); // 输出信息
p->Show2(); // 输出信息
Fun1(obj); // 调用Fun1()
Fun2(obj); // 调用Fun2()
return 0; // 返回值0, 返回操作系统
}
请问这程序是怎么理解的,我感觉很混乱,不好记住,求指教