1

我在这里有一些课程:

class weapons
{
protected:
    int damage, armor, cost;
};

class sword : public weapons
{
public:
    // Initialization for the sword class.
    void initialize()
    {

    }
};

class shield : public weapons
{

};

我开始研究这些,我不记得如何为每个继承的类设置伤害、护甲和成本。我该怎么做呢?什么是快速的方法(不一定很容易)?

4

3 回答 3

6

在类中设置变量的正确方法是通过类的构造函数。派生类应使用初始化列表在其基类中设置变量。

class weapon {
protected:
    int damage, armor, cost;
    weapon(int d, int a, int c) : damage(d), armor(a), cost(c) {}
};

class sword : public weapon {
private:
    int weight;
public:
    sword(int d, int a, int c, int w) : weapon(d, a, c), weight(w) {}
};

或者,如果子类控制基类中的值(即用户不通过damage, armor,或者cost您可以这样做:

sword(int w) : weapon(30, 5, 120), weight(w) {}

编译器将优化此代码以正确内联事物,因此您不必担心添加额外的构造函数层会影响性能。

于 2012-07-08T16:13:07.340 回答
1

只需在子类中使用它们。因为属性在父级中被定义为受保护,所以它们可以像在子级中的普通变量一样被访问。像这样:

damage = 60;
armor = 0;
cost = 42;
于 2012-07-08T16:10:55.810 回答
1
class weapons
{
protected:
    int damage, armor, cost;
    weapons(int d, int a, int c): 
      damage(d), armor(a), cost(c) { }
};

class sword: public weapons {
  public:
    sword(): weapons(10, 12, 31) { }
}
class shield: public weapons {
  public:
    shield(): weapons(1, 22, 48) { }
}
于 2012-07-08T16:15:47.370 回答