PHP多态性和虚函数实例分析
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天小编给大家分享一下PHP多态性和虚函数实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
苏州找大状互联网科技有限公司
互联网中国科技
互联网科技论文
小马过河互联网科技
远拓互联网科技
蓝色互联网科技
广州慧亚互联网科技怎么样
佳云科技和互联网广告
宝灵互联网科技有限公司
语蝶互联网科技有限公司
互联网科技如何创业
张召忠谈中国互联网科技
互联网科技快讯热点
卡尔迅互联网科技有限公司
东营紫格互联网科技
互联网高科技行业有哪些企业
求路客互联网科技电话
玉溪新华互联网科技怎么选
绵阳真晨互联网科技有限公司
互联网金融金融科技
壹账通互联网科技
撒么互联网科技公司
互联网科技股有哪些
蓝色互联网科技
昭通云南众福互联网科技有限公司
互联网科技公司营业执照怎么办理
互联网与数字科技关系
玉溪新华互联网科技怎么选
互联网科技自媒体灵感
互联网科技企业文化