PHP多态性和虚函数实例分析
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,今天小编给大家分享一下PHP多态性和虚函数实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
东莞睿几何互联网科技有限公司
棋类游戏软件开发代理
数据库的字段在哪里
网络安全领域中鸡肉指的是什么
网络技术管理是干嘛的
网络安全文明上网摘抄感想
国家网络安全管理
数据库用什么存储模型
河南悦博网络技术有限公司
ecu软件开发平台
声誉好的语音聊天软件开发
上海转介绍软件开发
米虫网络安全海报
绵阳旅游团软件开发
亚马逊安全的更换云服务器
前端怎么添加本地数据库
之前关于网络安全的电影
服务器ssl套件
中办关于落实网络安全责任制
服务器数据库无法访问
苹果id联接服务器失败
新虹互联网科技
easou连接服务器失败怎么办
描述数据库技术
曲洲老师手抄报网络安全系列
各大银行社招软件开发待遇
网络技术大专好找工作吗
软件开发是研发费用吗
方得网络安全
ftp服务器连接失败