C++多态

一 .动态多态

例子:

.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的时候要格外小心



三.其他例子

函数重载/函数模板的个例  就是多态

你可能感兴趣的:(C++多态)