构造函数与析构函数
在建立类的对象时我们一般希望在定义时就初始化成员数据,在使用完后能有清除工作,这时就需要构造函数和析构函数。
构造函数是与类名相同,在建立对象时系统就会自动调用构造函数,其实如果没有外部建立构造函数,系统也会自动建立一个构造函数只不过没什么太大的实际意义。
class Circle{ public: int x,y; int radius; Circle(){ x = 0; y = 0; radius = 0; } };
构造函数可以带参数,可以重载。
Circle(int x ,int y, int radius){ this->x = x; this->y = y; this->radius=radius; }
注意点: 1 、没有返回值 2、访问类型为public 3、系统自动调用
析构函数对象调用完毕后自动执行,格式 ~类名 ,没有任何参数,无返回值,值得注意的是析构函数只能有一个不能被重载,由系统自动调用,不能主动调用。
什么时候被调用?对象被销毁之时。对于局部变量(对象),在超出变量作用域后,该对象失效。
作用不要用于清理内存,例如:
class StringBuffer { public: StringBuffer() { m_buffer = malloc(1024*512); // 申请内存 } ~StringBuffer() { free(m_buffer); // 释放内存 } };