多态指相同语法结构,代表多种功能或操作
例如:X+Y
+
两边可以为不同类型也可以相加,比如虚数相加例如:datatype max(datatype a, datatype b)
无论 X + Y X+Y X+Y还是datatype max(datatype a,datatype b)
兔子类
class 兔子
{public:void 逃生(老鹰 a){"兔子蹬鹰";}void 逃生(老狼 b){"动如脱兔";}
};void main()
{兔子 rabbit;老鹰 eagle;老狼 wolf;rabbit.逃生(eagle);rabbit.逃生(wolf);
}
逃生函数是重载函数,相同函数名
在调用函数时,传入的参数类型在编译时就确定
最大类
#include<iostream>using namespace std;char max_( char x, char y ) { return x>y ? x : y; }int max_( int x, int y ) { return x>y ? x : y; }float max_( float x, float y ) {return x>y ? x : y; }void main()
{float a=3.14, b=2.718;cout << "d与s:" << max_('d', 's') << "大" << endl; // 字符类比较cout << "28与168:" << max_(28, 168) << "大" << endl; // 整数类比较cout << "3.14与2.718:" << max_(a, b) << "大" << endl; // 浮点数比较
}
#include<iostream>using namespace std;class pet
{public:virtual void speak() {cout<<"zzz"<<endl;};
};class cat : public pet
{public:void speak() { cout<< "miao!miao!"<<endl; }
};class dog : public pet
{public:void speak() { cout<< "wang!wang!"<<endl; }
};void main()
{pet pet1, *p=&pet1; //p为宠物类指针cat cat1; //定义猫类对象dog dog1; //定义狗类对象int x; //根据用户输入将猫或狗对象地址赋给p指针,cin >> x; //石头扔的远近,只有扔了才知道效果if(x==1) p = &cat1; //例如用户输入1 ,则执行猫对象地址赋给pif(x==2) p = &dog1; //例如用户输入2,则执行猫对象地址赋给pp->speak(); //究竟运行哪个函数,只有运行时才知道
}
注意: 0的时候 就输入基类中的成员函数
其中基类中pet
中有一个关键字virtual
,表明是虚函数
有virtual修饰的函数,在基类指针指向派生类对象或者基类引用以派生类对象赋值时调用派生类的函数,无virtual修饰时只会调用基类的函数
一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。下面是设置虚函数的注意事项:
1.只有类的成员函数才能声明为虚函数
2.静态成员函数不能使虚函数,因为它不受限于某个对象
3.内联函数不能使虚函数
4.构造函数不能是虚函数
本文发布于:2024-01-28 21:05:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170644712810275.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |