【发布时间】:2012-08-25 20:28:19
【问题描述】:
这是一个我很长一段时间都无法找到解决方案的具体问题。我有这个代码:
#include <iostream>
using namespace std;
class Mammal
{
public:
Mammal() {cout << "Mammal Constructor\n";}
virtual ~Mammal() {cout << "Mammal Destructor\n";}
virtual void Run() {cout << "Mammal Ran One Space\n";}
protected:
int mammalDistance;
};
class Horse : public Mammal
{
public:
Horse() {cout << "Horse Constructor\n";}
~Horse() {cout << "Horse Destructor\n";}
void Run() {cout << "Horse Ran One Space\n";}
void Run(int distance) {horseDistance = distance;
cout << "Horse Ran " << horseDistance << " Spaces\n";}
protected:
int horseDistance;
};
int main()
{
Mammal *pHorse = new Horse;
pHorse->Run(5);
delete pHorse;
return 0;
}
现在,如果我使用 void Run(int horseDistance) 并将其移至 Mammal 中,则此代码有效,但我想知道是否有办法将其保留在马中而不保持隐藏。
编辑:我的意思是,如果我采用接受输入的函数并将其向上移动到 Mammal 中,而不是像现在这样将它放在 Horse 类中,它会按预期编译和工作。 是的,如果它可以在传入 horseDistance 时改变它的值,我希望它。 编辑:哦,我明白你的意思。我编辑了代码。
【问题讨论】:
-
您能否进一步解释一下,我不确定您的意思。
-
定义“作品”。你的意思是“编译”吗?
-
你还想让
run(int)引用horseDistance吗?如果是这样,您打算使用参数horseDistance还是成员Horse::horseDistance?
标签: c++ class function virtual