有问题.txt
来自「里面的代码是自己写的,构思来自于c++primer,对于学习c++语法有非常大的」· 文本 代码 · 共 57 行
TXT
57 行
/*本程序属于第19章,为了说明dynamic_cast的用法。所用的例子就是书上的P836页的描述公司
职员薪水salary()和奖金bonus()(只有程序员才有奖金)发放情况的程序
*/
#include <iostream>
using namespace std;
class employee {
public:
virtual void salary();
virtual ~employee(){ }
};
class manager : public employee {
public :
void salary();
};
class programmer: public employee {
public:
void salary();
void bonus();
~programmer(){}
};
void employee::salary()
{
cout << "employee::salary()" << endl;
}
void manager::salary()
{
cout << "manager::salary()" << endl;
}
void programmer::salary()
{
cout << "programmer::salary()" << endl;
}
void programmer::bonus()
{
cout << "programmer::bonus()" << endl;
}
void main()
{
employee *pe = new programmer;
pe->salary(); //输出的是programmer::salary()
//pe->bonus(); //显然此句出错 error C2039: “bonus” : 不是“employee”的成员
//那么如何使用pe所指的programmer对象的bonus()呢?
if ( programmer * ppm = dynamic_cast< programmer *>( pe ) )
{
ppm->bonus();
}
delete pe;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?