1、多态性的基本概念
2、派生类对象替换基类对象
3、虚函数的定义
4、抽象类的定义
5、宠物类的设计
6、运算符重载
7、日期类对象判断大小8、分数类对象运算符重载
☐什么是虚函数?
☐在函数定义的头部加上virtual,该函数就是虚函数
☐事实上,在某基类中声明为virtual并在一个或多个派生类中被重新定义的同名成员函数,称为虚函数。
☐虚函数的定义:
virtual  函数返回类型函数名(参数表)
{
函数体
}
☐虚函数的用途:
☐实现运行时的多态性,即通过指向派生类的基类指针,访问派生类中同名覆盖成员函数
#include <iostream>
using namespace std;
class mobile
{public:
char mynumber[11];//机主的电话号码
virtual void showinfo()//显示制式
{cout<<”The phone is mobile”<<endl;}
};
class mobilegsm:public mobile
{public:
virtual void showinfo()//显示制式
{cout<<”The phone is mobilegsm”<<endl;} };
class mobilecdma:public mobile
{public:
virtual void showinfo()//显示制式
{cout<<”The phone is mobilecdma”<<endl;} };
int main()
{mobile m,*p1;//基类对象指针p1,基类对象m mobilegsm gsm;
mobilecdma cdma;
m=gsm;//用gsm类对象给mobile类对象赋值
m.showinfo();
m=cdma;//用cdma类对象给mobile类对象赋值
m.showinfo();
p1=&gsm;//用gsm类对象地址给mobile类对象赋值
p1->showinfo();
p1=&cdma;//用cdma类对象地址给mobile类对象赋值
p1->showinfo();
mobile &p4=gsm;//以gsm类对象初始化mobile类引用
p4.showinfo();
mobile &p5=cdma;//以cdma类对象初始化mobile类引用
p5.showinfo();
return 0;
#include <iostream>
using namespace std;
class Pet //基类
{public:virtual void Speak() { cout<<"How does a pet speak ?"<<endl; } }; class Cat : public Pet //派生类
{public:virtual void Speak() { cout<<"miao!miao!"<<endl; } };
class Dog : public Pet//派生类
{public:virtual void Speak() { cout<<"wang!wang!"<<endl; } };
int main()
{Pet*p1, *p2, *p3,obj;    //基类对象指针p1, 基类对象obj
Dog dog1;
Cat cat1;
obj = dog1;//用Dog类对象给Pet类对象赋值
obj.Speak();
p1 = &cat1; //用Cat类对象地址给基类指针赋值
p1->Speak();
p1 = &dog1; //用Dog类对象地址给基类指针赋值
p1->Speak();
p2=new Cat;//动态生成Cat类对象
p2->Speak();
析构函数的定义
p3=new Dog;//动态生成Dog类对象
p3->Speak();
Pet&p4 = cat1;//以Cat类对象初始化Pet类引用
p4 .Speak();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。