C++ 构造函数与析构函数

OrzMiku / 2023-08-20 / 原文

构造函数和析构函数

构造函数

  • 构造函数会在实例化对象的时候执行,可以在实例化时传入参数。

  • 构造函数没有返回值。不需要声明返回值。

  • 构造函数的函数名与类名保持一致。

// class name: Player
Player(int xa = 0, int ya = 0){
    // 构造函数,传入初始坐标进行初始化
    x = xa;
    y = ya;
    cout << "你出生在:(" << x << ", " << y << ")\n";
}

析构函数

  • 析构函数会在释放对象的时候执行。
  • 析构函数没有参数,但是()不能省略。
// class name: Player
~Player(){
    // 析构函数
    cout << "你在(" << x << ", " << y << ")死亡\n";
}

完整例子:

#include <iostream>

using namespace std;

class Player{
private:
    int x, y; // 玩家位置
public:

    Player(int xa = 0, int ya = 0){
        // 构造函数,传入初始坐标进行初始化
        x = xa;
        y = ya;
        cout << "你出生在:(" << x << ", " << y << ")\n";
    }

    void getPos(){
        cout << "你现在的位置:(" << x << ", " << y << ")\n";
    }

    void move(int xa, int ya){
        cout << "move from (" << x << "," << y << ") to \
(" << x+xa << "," << y+ya << ")" << endl;
        x += xa;
        y += ya;
    };

    ~Player(){
        // 析构函数
        cout << "你在(" << x << ", " << y << ")死亡\n";
    }

};

int main()
{
    Player player1(14,27);
    player1.move(2,-3);
    player1.getPos();
    return 0;
}