zoukankan      html  css  js  c++  java
  • 初学C++-----------------类的构造函数、析构函数

    1、构造函数

    特征:

      1)与类名同名。

      2)无函数返回类型说明。

      3)主要是完成对象的初始化。

      4)当一个新的对象被建立时(a.在对象的说明语句中 b.用new函数新建一个动态对象时),系统自动调用其相应的构造函数。

      5)可有多个构造函数(重载):多个构造函数的函数名相同,但是其形参在数据类型或数量上有差异,系统会根据参数的性质和个数来选择合适的构造函数。

      6)构造函数一定是公有函数。

      7)构造函数的执行是在系统创建对象时自动执行的。

    定义构造函数的一般形式为:

    class 类名

    {

      public:

        类名(形参列表);//构造函数原型

        其他成员

    };

    类名::类名(形参表)

    {

      函数体

    }

    默认的构造函数:

    若某个类定义中未给出显式的构造函数,则系统自动给出一个默认的构造函数:

        <类名> (void)

          {

          }

    若类定义了构造函数,则系统不提供默认的构造函数,此时,若还想要一个无参数的构造函数,则需用户另行定义。

    当构造函数的参数具有默认值时,称为具有缺省参数的构造函数。使用默认值时需注意:

    1)只能出现在类定义的接口部分,而不能出现在类定义的实现部分。

    2)所有具有默认值的参数必须处在参数表的最右边。

    3)  在使用具有缺省参数的构造函数时,要防止二义性。

     1 class sample    
     2 
     3 { private:
     4 
     5   int x,y,z;
     6 
     7   public:
     8 
     9   sample();//类sample的构造函数
    10 
    11   sample(int i, int j, int k=10);  //构造函数的重载,默认值只能出现在此处定义部分,而不能出现在下面的实现部分(第19行),且由于k有默认值,i,j没有,故k必须                                                位于i,j右侧
    12 
    13 };
    14 
    15 sample:: sample()     
    16 
    17 {   x=1; y=2;z=5;  }
    18 
    19 sample:: sample(int i, int j, int k)  
    20 
    21 {   x=i;y=j;z=k; }
    22 
    23 void main()
    24 
    25 {  
    26 
    27      sample x(20,30,80);
    28 
    29      sample y;    //产生二义性
    30 
    31 }

    2、析构函数

    特征:

    1)函数名为:~类名。

    2)无函数返回类型说明且无参数,不能随意调用,没有重载。

    3)完成对象撤销前的善后工作。

    4)当对象退出其说明区域,或使用delete释放动态对象时,系统自动调用其析构函数。如果用户未定义析构函数,则系统会生成和调用一个默认的析构函数。

    5)一个类只有一个析构函数,也可缺省。

    6)对象被析构的顺序与其建立的顺序正好相反。

    7)当在构造函数中用new运算符为类的数据成员动态分配内存时,则相应地在析构函数中必须用delete运算符释放该内存。

  • 相关阅读:
    反向代理实例
    nginx常用命令和配置
    nginx的安装
    Can Live View boot up images acquired from 64bit OS evidence?
    What is the behavior of lnk files?
    EnCase v7 search hits in compound files?
    How to search compound files
    iOS 8.3 JB ready
    Sunglasses
    现代福尔摩斯
  • 原文地址:https://www.cnblogs.com/yuanfy/p/3893547.html
Copyright © 2011-2022 走看看