2

我正在研究 C++ 的指针和继承。\

我创建了向量 Employee 类的指针,其中包含名称和薪水。此外,它还具有打印功能,可以打印出姓名和工资。

我把它变成了虚拟的

   virtual void print() const;

这里也是函数的实现

void Employee::print() const
{
    cout << "Inquiry Employee info..." << endl;
    cout <<  "Name:" << get_name() << "\n";
    cout << "Salary:" <<  get_salary() << "\n" << "\n";
}

在派生类中,我又添加了一个私有数据部门名称并覆盖了打印功能。我将派生类放在指针向量中,并尝试在派生函数上调用该函数。但是,它只调用基类中的函数。

当我自己创建派生类对象并调用该打印函数时,它起作用了。

我应该改变什么以使基类指针向量中的派生类对象可以调用派生类中的函数?

添加 ##

#ifndef MANAGER_H
#define MANAGER_H

#include <string>
#include<iostream>
#include "ccc_empl.h"
#include <iomanip>

class Manager : public Employee
{
public:
    Manager();
    Manager(string name, double salary, string dept);
    ~Manager();
    virtual string get_department() const;
    void print();

private:
    string deptName;
};
#endif

执行

#include <iostream>
#include <string>

#include "manager.h"
#include "ccc_empl.h"
Manager::Manager(){}
Manager::Manager(string name, double salary, string dept)
: Employee(name,salary)
{
    deptName = dept;
}
Manager::~Manager(){}
string Manager::get_department() const
{
    return deptName;
}
void Manager::print()
{
    cout << "Inquiry Manager info..." << endl;
    cout << "Name:" << get_name()  << "\n";
    cout << "Salary:";
    cout  << get_salary() << "\n";
    cout <<  "Department:"<< get_department() << endl << endl;
}
4

1 回答 1

2

您没有向我们展示 Derived 类打印函数,但我猜您忘记将其声明为 const。容易犯错误。

于 2013-04-03T22:22:55.740 回答