上一个例子usebrass1.cpp中,方法是通过对象(而不是指针或者引用)来调用的,这个很清楚,也没有使用上虚函数的特性。本例子可以说明虚函数的使用场景和特点。
数组中所有元素的类型必须相同,而Brass 和BrassPlus是不同的类型。但是可以创建指向Brass的指针数组,这样每个元素的种类都相同,由于使用的是公有继承,指向Brass的指针也可以指向BrassPlus对象。
本例子的brass.h和brass.cpp 和usebrass1.cpp是一样的,这里就略过了。
usebrass2.cpp
// Chapter13.3usebrass2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include "brass.h"
const int CLIENTS = 4;
int main()
{
// std::cout << "Hello World!\n";
using std::cin;
using std::cout;
using std::endl;
Brass* p_clents[CLIENTS];
std::string temp;
long tempnum;
double tempbal;
char kind;
for (int i = 0; i < CLIENTS; i++)
{
cout << "Enter client's name: ";
getline(cin, temp);
cout << "Enter client's account number: ";
cin >> tempnum;
cout << "Enter opening balance : $";
cin >> tempbal;
cout << "Enter 1 for Brass Account or" << "2 for BrassPlus Account: ";
while (cin >

本文通过一个C++程序示例展示了虚函数的使用场景和特点。在数组中,不同类型的对象(Brass和BrassPlus)通过指针进行管理,利用虚函数实现动态联编,使得调用正确的ViewAcct方法。程序运行时需要用户交互输入,根据输入创建不同类型的对象并执行相应的方法。如果ViewAcct未声明为虚函数,将无法正确调用子类的实现。此例子涉及到C++的动态类型和虚函数表概念。
最低0.47元/天 解锁文章
2707

被折叠的 条评论
为什么被折叠?



