c++ Primer学习完后第十三章拷贝控制的小结

其实这一章个人感觉也就比较简单了,主要就是说明在编写一个类的时候我们应该什么时候使用拷贝构造函数、移动构造函数、拷贝赋值运算符、移动赋值运算符和析构函数。如果我们没有定义这些,那么编译器就会自动合成这些函数。但是有的时候我们不希望有这些函数,那么我们就可以在参数列表后面加上“=delete”。如果一个类需要析构函数,那么几乎可以确定,上面的四种运算也是需要的。

拷贝构造函数:构造函数的参数列表里通常是一个const类的左值引用(用&)。用一个类初始化另一个类。

移动构造函数:构造函数的参数列表里通常是一个非const类的右值引用(用&&,可以用标准库std::move来生成一个右值引用)。将一个类里的值移动到另一个类中进行初始化(移动就是将值搬运到另一个里,所以既然值被搬运走了,那么类就没值了,就会被销毁,执行析构函数。但是为什么我测试的时候没有销毁,而是在作用域结束之后才销毁。我用别人的测试代码也是一样的结果,明明他就可以。难道是编译器的问题?我用的是g++编译器。 )。

析构函数:在类名前面加上“~”的函数。负责当类的销毁的是做什么。
拷贝/赋值运算符就是重载一个“=”的函数,在下一章会有。

这一章剩下的就基本是练习了。勉强算是开始面向对象的编程了。有个很坑的点在一个练习上。就是两个独立的类要怎么互相联系。就是说一个A类,一个B类,A的成员函数要使用B作为函数的参数如void test(const B &xxx),B也是一样要使用A,那么我的想法(我觉得一般人如果没学习过的话和我的想法应该是一样的)是A类头文件里包含B头文件,B头文件包含A头文件,这样就会报错。正确的做法是一个包含头文件,另一个使用前置声明,然后在.cpp文件里包含头文件。

想想如果两个头文件互相包含的话就有可能出现死循环了吧。。。可能我就是弟弟吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值