怎样构造一个正确高效的C++的类的拷贝构造函数和赋值函数

推荐一本C++经典好书:effetive c++,该篇文章部分来源于该书


拷贝构造

 

1.了解C++编译器默默编写并调用了哪些函数,若不想使用编译器自动生成的函数,就该明确拒绝(effctive c++条款5,6)


2. 拷贝构造函数的参数可以是一个或者多个,但做起的第一个参数必须是类的引用对象,需要注意的是:一旦定义了拷贝构造函数,则隐式的默认拷贝构造函数便不再有效 了,并且隐式的默认构造函数也不再有效了。


3 拷贝构造函数无函数返回值


4.倘若有指针型成员变量,则要对拷贝构造函数进行重写(见我的另一篇文章:“若类中有指针型数据成员,类的几个函数的重写”)


5.当是派生类构造拷贝构造函数时,注意:复制对象时勿忘其每一部分,

     解决办法:effctive c++条款12

    

 

  赋值


1.了解C++编译器默默编写并调用了哪些函数,若不想使用编译器自动生成的函数,  就该明确拒绝(effctive c++条款5,6)


 2.赋值运算符不能重载为友元函数,只能重载为一个非静态成员函数


3.赋值运算符重载函数是唯一一个不能被继承的运算符函数。.


4.令operator=返回一个引用,这样就可以处理连锁赋值的问题,因为返回引用则其可

以作为左值

         返回值类型是引用,而不是对象,这样,赋值表达式就可以作为左值,比如

       (x=y)++;倘若赋值函数返回的是类的对象,那么赋值后就不能当作左值了。

        (effective c++条款10)

5在operator中处理“自我赋值”(.effctive c++条款11)


6.当类中有指针型数据成员时,赋值函数要进行重写(见我的另一篇文章:“若类中有指针型数据成员,类的几个函数的重写”)


7.当构造的是派生类的赋值函数时:复制对象时勿忘其每一部分,effctive c++条款12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值