构造函数和析构函数
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
来分配内存。在析构函数里,你需要释放棋盘用到的内存。
你可以根据自己的理解,给这个类添加一些成员函数。