构造函数与析构函数

一、构造函数

       在类中数据成员一般 多为私有数据成员,要对他们进行初始化,必须要用一个公有函数来进行,并且这个函数在类中仅且只能被调动一次(构造一个对象时),称为构造函数。

        对私有数据访问,必须通过公有方法

构造函数与析构函数

构造函数特点:

1.与类名一致

2. 函数无返回值,是没有返回值并不是void,即什么都不能写,也不可写void,时间是构造函数是有返回值的,返回的就是构造函数所创建的对象。

3.在某个对象从生到死只能被调动一次。

4.构造函数可以重载,由不同的参数列表区分,调动时候按照重载规则执行。

5.如果缺省构造函数,系统会给一个默认构造函数,很可惜他不什么都不做,作用只是构造出对象。

6.如果写了构造函数,系统就不会自作多情在为你创建默认的构造函数

7.缺省的构造函数只能同时出现一个(假如构造函数中的参数列表都有默认值,我们就认为他是缺省的构造函数),不然的话就会出现二义性,编译不能通过

 

有参数列表的构造函数都有默认值的话,该函数就是默认有参构造函数,在类中只能有一个默认构造函数

比如你定义了一个class A类,里面没有写任何构造函数,则系统会自动给你生成一个默认构造函数
该函数是A(),该默认构造函数是没有参数的,所以他同时是一个无参构造函数。
无参构造函数就是函数没有参数,说白了就是函数的括号里没有任何东东。

系统默认构造函数 A(){}

无参构造函数 = 无参默认构造函数 A(){…}

有参构造函数A(int a){}

有参默认构造函数A(int a = 0){…}

无参构造对象时可以调动有参默认函数,无参构造对象时候只调动默认构造函数(一个类只能有一个默认构造函数可以是系统的、或是无参的、或者是有参的),但是有参构造对象时候就不能调动无参构造函数构造对象,只能通过有参构造函数(可以不匹配,但构造对象是的参数个数要小于构造函数的参数个数),或者有参默认函数(个数也要小于构造函数参数个数)

构造函数与析构函数

8.对象的数据成员为公有的,可以成员访问符访问。

二、析构函数

       当定义一个对象时候C++会自动调用构造函数建立该对象并进行初始化,当对象生命周期结束的时候,C++也会调动一个注销函数,对其对象进行善后工作,这个特殊的成员函数叫做析构函数

析构函数特点:

1.与类名相同 ,在前面加上~ 例如 ~Test();

2.析构函数无返回值,并且无参数列表,就一种写法。

3.一个类只能有一个析构函数,析构函数也可以缺省,缺省的话系统会自动为你创建一个析构函数。

3.对对象注销,系统自动调动析构函数.