如果可以使用 get 和 set,为什么还要使用构造函数?

时间:2020-12-30 19:34:19

标签: c++ function constructor destructor class-constructors

OOP 让我很头疼 :( 因为我了解构造函数的工作原理,但我不明白它们的作用是什么。

我有一个名为 Player 的类,如下所示:

class Player
{
private:
    std::string name;
    int health;
    int xp;
public:
    //Overloaded Constructor
    Player(std::string n, int h, int x) 
        {
        name = n;
        health = h;
        xp = x;
        }       
};

int main()
{
    Player slayer("Jimmy", 1000, 200);
    return 0;
}

在那里使用构造函数(我不知道它的作用或用途)我可以使用 set_nameget_name 方法来设置名称 - 并使用相同的方法health 和 xp - 然后使用函数获取名称。所以,一个构造函数替换了函数???

如果它不替换 set & get 那么它的目的是什么?此外,我可以使用上面相同的构造函数来初始化我的属性并避免垃圾:

Player(std::string n, int h, int x) : name{n}, health{h}, xp{x} {}

但是我也可以这样做:

Player(std::string n, int h, int x) : name{n}, health{h}, xp{x} { name = n; health = h; xp = x;}

我不明白,这是什么意思?我知道在第一种情况下我正在初始化它,在第二种情况下我说名称 health 和 xp 等于我要设置的任何名称。

了解了所有这些信息,我仍然不知道什么是构造函数以及我应该使用它做什么。这很混乱。

1 个答案:

答案 0 :(得分:1)

构造函数在 C++ 中起着非常重要的作用。使用正确编写的构造函数,您知道对象始终有效。它永远无法分配,但不知何故处于无效状态。

通常,如果您的类具有设置其所有状态的 set 方法,您只需让构造函数执行 set 并使用一组适当的默认值。那么你就不需要重复代码,而且你的对象从一开始就处于有效状态。