PHP多态性和虚函数实例分析
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,今天小编给大家分享一下PHP多态性和虚函数实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来
千家信息网最后更新 2025年11月12日PHP多态性和虚函数实例分析
今天小编给大家分享一下PHP多态性和虚函数实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
理论练习题
给出以下程序的执行结果。
#includeclass A { public: virtual void f() //虚函数 { cout << "A::f() called." << endl; } }; class B:public A { public: virtual void f() //虚函数 { cout << "B::f() called." << endl; } }; void main(){ B b; void (A::*pf)()=A::f; (b.*pf)(); } 答
B::f() called.
给出以下程序的执行结果
#includeclass A { public: virtual void disp() //虚函数 { cout << "Base class A." << endl; } }; class B:public A { public: virtual void disp() //虚函数 { cout << "Derived class B." << endl; } }; class C:public A { public: virtual void disp() //虚函数 { cout << "Derived class C." << endl; } }; void main(){ A *ptr; A a; B b; C c; ptr=&a; ptr->disp(); ptr=&b; ptr->disp(); ptr=&c; } 答:
Base class A. Derived class B. Derived class C.
分析以下程序的错误并改正
#includeclass A { int x; public: A(int i) { x=i; } void dispa() { cout << "x=" << x << endl; } }; class B : public A { int y; public: B(int i,int j):A(i) { y=j; } void dispb() { cout << "y=" << y << endl; } }; void main() { A *p,a(1); B b(2,3); p=&a; p->dispa(); p=&b; p->dispb(); } 答:程序中说明了类A和派生类B,在main()中定义了类A对象指针p,先让p指向类A的对象a,执行p->dispa(),再让p指向类B的对象b,执行p->dispb()。由于这里采用的是静态联编方式,通过指针p只能调用类A的成员函数,而类A中没有dispb()成员函数,所以出错,编译时的错误信息如下:
error C2039: 'dispb' : is not a member of 'A'改正的方法是将相关的成员函数改为虚函数,程序如下:
#includeclass A { int x; public: A(int i) { x=i; } virtual void disp() //虚函数 { cout << "x=" << x << endl; } }; class B : public A { int y; public: B(int i,int j):A(i) { y=j; } void disp() { cout << "y=" << y << endl; } }; void main() { A *p,a(1); B b(2,3); p=&a; p->disp(); p=&b; p->disp(); } 程序执行结果如下:
x=1 y=3
上机实习题
题目
设计一个评选优秀教师和学生的程序,其类结构如下图所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来,并采用相关数据进行测试。
解析:设计一个基类base,含纯虚函数isgood(),由base类派生出类student和类teacher,分别包含纯虚函数针对学生和教师为优秀的定义。对应的程序如下:
参考代码
#include#include using namespace std; enum boolean {False,True}; class base { protected: char name[8]; public: void getname() { cout << " 姓名:"; cin >> name; } void printname() { cout << " 姓名:" << name << endl; } virtual boolean isgood()=0; //纯虚函数 }; class student : public base { int num; public: void getnum() { cout << " 考试成绩:";cin >> num; } boolean isgood() { return (num>90) ? True:False; } }; class teacher:public base { int num; public: void getnum() { cout << " 每年发表论文数:";cin >> num; } boolean isgood() { return (num>3) ? True:False; } }; int main() { base *p[50]; student *pstud; teacher *ptech; char ch; int count=0; do { cout << "输入教师(t)或学生(s):"; cin>> ch; if (ch=='s') { pstud=new student; pstud->getname(); pstud->getnum(); p[count++]=pstud; } else if (ch=='t') { ptech=new teacher; ptech->getname(); ptech->getnum(); p[count++]=ptech; } else cout << "输入错误" << endl; cout << "继续输入吗(y/n)?"; cin >> ch; } while (ch=='y'); cout << "优秀学生或教师" << endl; for (int i=0;i isgood()==True) //若为优秀,则输出之 p[i]->printname(); return 0;}
以上就是"PHP多态性和虚函数实例分析"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
函数
程序
优秀
学生
教师
知识
篇文章
分析
对象
成员
结果
错误
多态
多态性
实例
实例分析
内容
姓名
指向
指针
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务好又优惠的数据库运维
vb的ftp服务器
华梦互联网科技有限公司
服务器管理怎么看
通信网络技术读书心得
宁海软件开发管理
江苏学生网络技术服务指导
成都鹰飞尼特斯网络技术有限公司
微网力合网络技术公司
徐州电子网络技术收费
soul老是连接服务器失败
重庆数字化城管软件开发软件
网络技术基础知识教案
服务器租赁费入咨询费可以吗
工业机器人与现场总线网络技术
怎么在服务器中添加数据库
网络安全信息中心考试
数据库connection失效
网络安全系统包括哪些方面
服务器服主一年能挣多少钱
网络安全领域中的完整性规则
如何数据库备份到异地
1.18mc国际服服务器推荐
南昌珠峰软件开发
云服务器端游
数据库转换线
软考数据库看什么书
网络安全专科有哪些专业
湖南禧酒科技互联网有限公司
sql 数据库运行慢怎么处理