Skip to content

构造函数和析构函数

Constructor&Destructor

构造函数用来“创建”一个对象,析构函数用来“销毁”一个对象。

我们通过例子来学习,讲解一段用到构造函数和析构函数的C++代码。

#include<cstdio>
class Point{
    int x,y;
    int* arr;
public:
    Point(int a, int b){//constructor
        x = a;
        y = b;
        arr = new int[10];
    }
    void print_xy(){
        printf("%d %d\n",x,y);
    }
    ~Point(){//destructor
        delete[] arr;
    }
};
int main(){
    Point a(1,2);
    a.print_xy();
}

我们为Point定义了接受两个参数的构造函数, 在创建一个Point对象的时候使用构造函数,就可以同时进行x,y的初始化。

同时,构造函数里还动态分配了一段内存,大小为10个int变量。

我们为Point定义了析构函数~Point()。一个对象被创建,就会被销毁。如果我们不在析构函数里delete[] arr, arr所指向的动态分配的内存暂时就“丢失”了。

所谓“创建对象”,实际上是向操作系统索要了这个对象所需的内存,并按照这个对象的格式在这段内存里初始化数据。

所谓“销毁对象”,就是将这个对象所占的内存归还给操作系统,尘归尘,土归土。

练习1: 为你在上一步中编写的Segment类编写构造函数

练习2: 编写一个类,里面可以保存一个五子棋的棋局局面。 特别地,这个五子棋的棋盘大小是一个不确定的n,你需要在构造函数里接受n作为参数,然后使用new来分配内存。在析构函数里,你需要释放棋盘用到的内存。 你可以根据自己的理解,给这个类添加一些成员函数。