C++ tip5 构造函数和析构函数

构造函数: 在对象实例化的时候被自动调用。

构造函数与类同名
构造函数没有返回值。
构造函数可以进行重载。
实例化对象时仅用到一个构造函数。
用户没有定义构造函数时候,系统会创建一个默认的。

定义构造函数:

class Student {
    public: 
        // 无参数
          Student(){
          m_strName = "xiaosan";  
    }

        // 有参数
        Student(string name){
          m_strName = name;  
    }
    private:
        string m_strName;
}
对象初始化
Student t1;
Student t2("shabi");

注意点:

Student(){
    m_strName = "xiaosan";  
}
 Student(string name = "sss"){
    m_strName = name; 
}  

当要调用的时候,如果需要使用默认值。
Student t1();
Student t2();

这样调用时有冲突的。

构造函数初始化列表

默认构造函数:在创建对象不需要传参数的构造函数。
class Student {
      public: 
      Student(){}
      Student(string name = "jim")
      // 上面两个是一样的
}
class Student {
  public: 
      // 这里使用的是函数的初始化列表
      /*
        使用初始化列表先于构造函数执行。
        使用初始化列表可以给 常量赋值。
        初始化列表只能用于构造函数。可以同时初始化多个值。
      */
      Student(): m_strMame("jim"), m_iAge(10){}
      Student(string name = "jim")
      // 上面两个是一样的
  private:
      string m_strName;
      int m_iAge;
}

拷贝构造函数

class Student {
      public: 
      Student(){
      m_strName = "ssss"
  }
      // 拷贝构造函数
      // 格式: 类名(const 类名 & 变量名)
      Student( const Student& stu){
}

      private:
        string m_strName;
      
      // 上面两个是一样的
}



Student stu1;
Student stu2 = stu1;
Student stu3(stu1);

初始化了三次,但是构造函数就调用了一次。
stu2 和 stu3 的初始化是使用 拷贝构造函数来实现的

注意: 当采用赋值初始化,和使用对象进行初始化的时候使用的是。拷贝构造函数。

析构函数
归还使用的系统资源

// 这就是一个析构函数
// 没有参数,也没有重载的概念
~类名(){

}

你可能感兴趣的:(C++ tip5 构造函数和析构函数)