【发布时间】:2013-03-25 19:36:40
【问题描述】:
我正在研究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;
}
【问题讨论】:
-
由于某种原因,您没有向我们展示 Derived 类打印函数,但如果我不得不猜测,我会说您忘记将其声明为 const。
-
请发布您的问题的最小完整可编译示例。
-
我添加了我的代码,但是是的,我忘了放 const.. 谢谢!
-
你的指针向量在哪里? print() 不是虚拟的。
-
@john:我想你现在可以回答了
标签: c++ pointers vector derived-class