一 .动态多态
例子:
.h
class Staff {
public:
virtual float money(int day) =0;//纯虚函数 【不可被实例化】
};
class Staff_boos:public Staff {
public:
virtual float money(int day);//定义为虚函数的函数 可以在子函数里面 从新更改内容,这叫多态
};
class Staff_staff :public Staff {
public:
virtual float money(int day);
};
.cpp
void main() {
char op;
cin >> op;
Staff * pTest = NULL;
while (op!='q') {
if (op=='j') {
pTest = new Staff_boos();
cout << pTest->money(1) << endl;
}
else if (op=='k') {
pTest = new Staff_staff();//一个知识点 这才叫 基指针 指向 儿子
cout << pTest->money(10) << endl;
}
else {
cout <<"test" << endl;
}
delete pTest; //new出来的当然需要删除。。。
pTest = NULL;
cin >> op;
}
}
float Staff::money(int day) {
return 0;
}
float Staff_boos::money(int day) {
return day*128.5f + 3000;
}
float Staff_staff::money(int day) {
//cout <
return day * 58;
}//值得注意的是。。这要求参数必须一样。。。
二.创造这样的虚类函数 析构时应特别注意
1.只要基类的析构函数是虚函数,则其所有的子孙都是虚函数
2.在设计一个类层次时 记得要把基类析构函数声明为虚函数
3.虚函数声明 virtual ~类名();
4.当然,在有new的时候要格外小心
三.其他例子
函数重载/函数模板的个例 就是多态
网友评论