C++构造函数/析构函数/赋值函数(2)

   构造函数是特殊的成员函数,用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的构造函数。

      2. 默认构造函数

     正如第一部分所述,如果没有为一个类显示定义任何构造函数、编译器将自动为这个类生成默认构造函数。默认构造函数将依据变量初始化的规则初始化类中的所有成员:

       (1)对于具有类类型的成员,会调用该成员所属类自身的默认构造函数实现初始化;

       (2)内置类型成员的初值依赖于对象如何定义,如果对象在全局作用域中定义或定义为静态局部对象,则这些成员将被初始化为0。如果对象在局部作用域中定义,则这些成员没有初始化;

       (3)默认构造函数一般适用于仅包含类类型的成员的类;

       (4)由于默认构造函数不会初始化内置类型的成员,所以必须显示定义类的构造函数。       

1 #include <iostream> 2 using namespace std; 3 class Empty 4 { 5 public: 6 int a; 7 string s; 8 }; 9 10 int main(int argc, char** argv) 11 { 12 Empty a; 13 cout << a.a << endl;//输出a的值随机 14 cout << a.s.size() << endl;//s是类类型被初始化为空串 15 }

View Code

      3. 构造函数的特点

         (1)在对象被创建时自动执行;

    (2)构造函数的函数名与类名相同;

    (3)没有返回值类型、也没有返回值;

    (4)构造函数不能被显式调用;

      4. 重载构造函数

    可以为一个类申明的构造函数的数量没有限制,只要每个构造函数的形参表示唯一的。定义类对象的时候,实参指定使用哪个构造函数。比如我们定义类Sales_item,它的构造函数有三个,在定义类的新对象时,可以使            用这些构造函数中的任意 一个。

 

1 Class Sales_item{ 2 public: 3 Sales_item(const std::string&); 4 Sales_item(std::istream&); 5 Sales_item(); 6 }; 7 int main() 8 { 9 Sales_item empty;//使用缺省的无参构造函数 10 Sales_item Primer_3rd_Ed("0-201-82470-1"); 11 Sales_item Primer_4th_ed(cin); 12 return 0; 13 }

View Code

      5. 构造函数自动执行

     只要创建对应类类型的一个对象,编译器就运行一个构造函数。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b07621f91a28989cad46eeac8c702217.html