我这里有一些课程:
class weapons
{
protected:
int damage, armor, cost;
};
class sword : public weapons
{
public:
// Initialization for the sword class.
void initialize()
{
}
};
class shield : public weapons
{
};
我开始研究这些,我不记得如何设置每个继承类的伤害,护甲和成本。我该怎么做呢?什么是快速方式(不一定非常简单)?
答案 0 :(得分: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) {}
编译器将优化此代码以正确内联,因此您不必担心添加额外的构造函数层会带来性能。
答案 1 :(得分:1)
只需在子类中使用它们即可。由于属性在父级中被定义为受保护,因此可以像子级中的常规变量一样访问它们。像这样:
damage = 60;
armor = 0;
cost = 42;
答案 2 :(得分: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) { }
}