⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 virtpers.cpp

📁 高永强 全C编程源码 清华大学出版社 2002年六月第一版
💻 CPP
字号:
//这个程序在本书所带软盘中。文件名为VIRTPERS.CPP
//这个程序利用纯虚拟成员子程序和继承体现程序的多态性。

#include <iostream.h>
#include <stdio.h>

enum boolean { false, true };		//定义枚举类型数据boolean

class base {						//定义具有纯虚拟成员子程序的基类
	public:
		void get_name()
		{
			cout << "   请输入姓名: "; 
			gets(name); 
		}
		void display()
		{
			cout << "姓名: " << name; 
		}
		virtual void get_data() = 0;		//纯虚拟成员子程序
		virtual boolean outstanding() = 0;	//纯虚拟成员子程序
	protected:
		char name[40];
};

class student : public base {				//学生类
	public:
		void get_data()						//输入学生信息
		{
			base::get_name();
			cout << "   请输入学生的 GPA: "; cin >> GPA;
		}
		boolean outstanding()
		{ 
			return (GPA > 3.5) ? true : false; 
		}
	private:
		float GPA;
};

class professor : public base {				//教授类
	public:
		void get_data()						//输入教授信息
		{
			base::get_name();
			cout << "   请输入教授的出版数: ";
			cin >> num;
		}
		boolean outstanding()
		{
			return (num > 20) ? true : false; 
		}
	private:
		int num;
};

void main(void)
{
	base* persPtr[100];						//人名数组,最大为100单元
	int n = 0;								//计数器
	char choice;

	do {
		cout << "输入教授还是学生 (p/s): ";
		cin >> choice;
		if (choice == 's')					//如果输入的是学生
			persPtr[n] = new student;		//把学生数据放入数组
		else
			persPtr[n] = new professor;		//否则输入的是教授
		persPtr[n++]->get_data();			//输入数据
		cout << "   输入下一个 (y/n)?";		//是否输入下一个
		cin >> choice;
	} while ( choice=='y' );				//继续循环直到回答不是y

	for(int j=0; j<n; j++)					//定义名单
	{										// persons, and
		persPtr[j]->display();				// say if outstanding
		if ( persPtr[j]->outstanding() == true )
			cout << "   杰出人物奖接受者" << endl;
		else
			cout << endl;
	}
}

/*下面是这个程序运行后的一个典型输出结果:
输入教授还是学生 (s/p): s
   请输入姓名: 王钢
   请输入学生的 GPA: 3.8
   输入下一个 (y/n)? y
输入教授还是学生 (s/p): p
   请输入姓名: 李新
   请输入教授的出版数: 22
   输入下一个 (y/n)? y
输入教授还是学生 (s/p): p
   请输入姓名: 高翔
   请输入教授的出版数: 19
   输入下一个 (y/n)? y
输入教授还是学生 (s/p): s
   请输入姓名: 张维
   请输入学生的 GPA: 3.4
   输入下一个 (y/n)? n
姓名: 王钢   杰出人物奖接受者
姓名: 李新   杰出人物奖接受者
姓名: 高翔
姓名: 张维
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -