构造函数与析构函数

      在建立类的对象时我们一般希望在定义时就初始化成员数据,在使用完后能有清除工作,这时就需要构造函数和析构函数。

  构造函数是与类名相同,在建立对象时系统就会自动调用构造函数,其实如果没有外部建立构造函数,系统也会自动建立一个构造函数只不过没什么太大的实际意义。

 

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); // 释放内存
      }
};

 

posted @ 2017-03-04 18:28  rimonzheng  阅读(99)  评论(0编辑  收藏  举报