简单了解构造函数和析构函数

一、什么是构造函数和析构函数 

  构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而是创建对象的时候自动调用。

  析构函数是对象不再使用的时候,需要清理资源的时候调用。

二、构造函数和析构函数的基本语法

1. 构造函数:

a.C++中的类需要定义与类名相同的特殊成员函数时,这种与类名相同的成员函数叫做构造函数;

b.构造函数可以在定义的时候有参数;

c.构造函数没有任何返回类型。

d.构造函数的调用: 一般情况下,C++编译器会自动的调用构造函数。特殊情况下,需要手工的调用构造函数。

class Test
{
   public:
   //构造函数
   Test()
   {

   }
}

2、析构函数:

a.C++中的类可以定义一个特殊的成员函数清理对象,这个特殊的函数是析构函数;

b.析构函数没有参数和没有任何返回类型;

c.析构函数在对象销毁的时候自动调用;

d.析构函数调用机制: C++编译器自动调用。

class Test
{
  ~Test()
  {

  }
}

三、构造函数的分类以及调用 

a. 无参构造函数

class Test
{
  private:
       int x;
  public:
       Test()
       {
         this->x=10;
       }
}

无参构造函数的调用: Test a; 

b. 有参构造函数

class Test
{
  private:
       int x;
  public:
       Test(int x)
       {
         this->x=x;
       }
}

有参数构造函数的调用时机:

1、Test a(10); 调用有参数构造函数

2、Test b=(2,3); 逗号表达式的值是最后一位,调用有参数构造函数

3、Test c=Test(2); 产生一个匿名对象,直接转化成c(只会调用一次有参数构造函数)

 c. 拷贝构造函数: 使用对象a初始化对象b

class Test
{
   private:
          int x;
   public:
          Test(const Test& a)
          {
             this->x=a.x;
          }
}

拷贝构造函数的调用时机:

class Test
{
private:
    int x;
public:
    Test(int x)
    {
        this->x = x;
        cout << "对象被创建" << endl;
    }
    Test()
    {
        x = 0;
        cout << "对象被创建" << endl;
    }
    ~Test()
    {
        cout << "对象被释放" << endl;
    }
    Test(const Test& a)
    {
        this->x = a.x;
        cout << "对象被释放(拷贝构造函数)" << endl;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_63246738/article/details/130439275
今日推荐