总结C++中的构造函数,析构函数

要总结首先要明白何为构造函数?

讲直白一点就是构造函数就是类里边的一个成员函数,当有新的类对象创建时编译器就会自动调用来对类的成员进行初始化,这个成员函数可以写带有参数或不带参数的自定义构造函数,但是自定义的构造函数函数名必须和类的类名、访问修饰符一致,而且不能有返回值,也可以不写,如果你不自定义那编译器就会调用一个无参的默认构造函数。最重要的一点是构造函数在一个对象的生命周期里只能出现一次,且不能被const修饰,。

其中构造函数共分为三种

(1)      无参构造函数和带有缺省值的构造函数


注意:无参构造函数和带有缺省值构造函数都属于缺省构造函数,所以一个对象中这两种构造函数只能存在一个。

(2)      带参构造函数


注意:带参构造函数应避免用本对象成员初始化本对象成员,若违反该规则可能会出现初始化失败,或初始化不能全部成功。

(3)      copy构造函数也叫复制构造函数

注意:copy构造函数的参数必需使用同类对象的引用传递,这是为了避免无限递归

如果类里没有显示的狗copy构造函数,编译器会自动调用一个默认的copy构造函数,默认函数会根据形参数据进行初始化。

构造函数还可以再类里边只声明,在类外定义。例如:


下面我们就来了解一下对于构造函数的调用方法:

(1)      无参构造函数:对于无参构造函数调用极其简单,你建立一个新的类对象不用添加任何东西系统就会自动调用。

(2)      有参构造函数:与参构造函数的调用一共有三种方法

1.      括号调用法类型名 变量名(形参)形参有几个写几个两个之间用逗号隔开。

2.      等号调用法即 假设有一个Text的类 Text t=5;或者Text t=(4,5),后面的例子中的(4,5)是一个逗号表达式,至于什么是逗号表达式就不在这里多做解释。

这种调用方式有局限性,只适合形参只有一个的对象的初始化。


3.      直接调用法例如Text t=Text(5,4);


(3)       Copy构造函数:

1.      CDate t1(1,2);

Date t2=t1;用t1来初始化t2;

2.      CDate t1(1,2);

 CDate t2(t1);同样还是用t1来初始化t2;     

(4)      当类内没有显示的定义构造函数,那么编译器就会调用默认的构造函数

析构函数:

析构函数名也与类名相同,只是在函数名前面加一个位取反符~,例如上面的类的析构函数就是~CDate(),以区别构造函数

析构函数的特点:

1.      析构函数雨构造函数的作用相反,构造函数创建并初始化对象,析构函数是释放并清理对象;

2.      雨构造函数相同一个对象有且只有一个析构函数。

3.      当对象生命周期结束时编译器会自动调用析构函数。

4.      析构函数不是删除对象而是做了一些清理工作。

5.      析构函数没有形参所以并不能被重载。

如果有什么不足,请在评论中提出,谢谢

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值