我最近从Java转到C++,在理解类继承方面遇到了一些困难。目前,我有一个叫做
Weapon
的类和一个叫做Minigun
的类。 Minigun
继承了Weapon
类,这意味着它应该具有Weapon
定义的方法和变量。我的问题是,在Weapon
类中有一个叫做rate
的私有常量静态整数,并且有一个返回整数的公共方法叫做getRate()
。 getRate()
只是简单地返回类中定义的速率变量。当Minigun
扩展Weapon
时,我设置Minigun
内部的速率,但是getRate()
方法仍然返回Weapon
类中的常量,即使它被调用在Minigun
类上。我以为它会像Java一样,继承的方法将使用Minigun
中修改的变量。目前,我必须执行以下操作;
Weapon.h
#ifndef __WEAPON__
#define __WEAPON__
class Weapon
{
public:
virtual int getRate()
{
return rate;
}
private:
const static int rate = 0;
};
#endif
Minigun.h
#include "Weapon.h"
#ifndef __WEAPON_MINIGUN__
#define __WEAPON_MINIGUN__
class Minigun: public Weapon
{
public:
int getRate(); // I have to define this here, and create it inside Minigun.cpp
private:
const static int rate = 30;
};
#endif
Minigun.cpp
#include "Minigun.h"
int Minigun::getRate() // Is there a way so I do not need to type this out for every class that extends Weapon?
{
return rate;
}
return Minigun::rate;
。无法保证结果。 - Chemistppreturn 30;
)呢? - Jonathan Potter