在什么情况下总是为类调用默认构造函数?

时间:2014-12-12 21:47:49

标签: c++ visual-c++

我最近意识到我在C ++中已经变得多么生气,所以我决定开发一个基于文本的小型RPG。我有一个武器课和一个球员课。我的默认播放器构造函数是:

Player::Player()
{
    name = "Henry";
    hp = 50;
    mp = 25;
    xp = 0;
    Weapon wep = Weapon::Weapon("Club", 5);
}

我的武器有两个构造函数,如下所示:

Weapon::Weapon()
{
    name = "Hands";
    damage = 1;
}
Weapon::Weapon(string n, int d)
{
    name = n;
    damage = d;
}

我的武器课程:

class Weapon
{
private:
    string name;
    int damage;
public:
    Weapon();
    Weapon(string n, int d);
    string getName();
    int getDmg();
};

然而,问题是当我在主文件中调用getName()函数时,它返回" Hands"。同样,getDmg()返回1.这是正常还是我做错了什么?

1 个答案:

答案 0 :(得分:4)

Weapon wep = Weapon::Weapon("Club", 5);在您的Player构造函数的本地,您可能意味着wep = Weapon("Club", 5); 甚至更好:

Player::Player() :
    name("Henry"),
    hp(50),
    mp(25),
    xp(0),
    wep("Club", 5)
{
}