More Effective C++ ——基础议题

本文介绍了C++编程的四个重要条款。一是要仔细区别Pointers和References,明确二者在定义、NULL值、效率等方面的差异;二是建议使用C++转型操作符,阐述了旧式转型的缺点和新式转型的优点;三是最好不使用多态方式处理数组,因多态和指针算术不能混用;四是提到非必要不提供default constructor。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

条款1: 仔细区别Pointers和References

       均用于间接指向其他对象,pointer存储对象所在的地址(4个字节),reference实质上是对象的别名:

      1   显式区别:pointer定义时使用符号 ‘*’ ,reference定义时使用符号 ‘&’ (&用于指针表示取某个变量的地址,将其赋值给指针变量);Pointer访问指向的对象时使用 ‘->',reference 使用符号 ‘.’;

      2   NULL: pointer可以为NULL(C++11 为nullptr);reference不能为NULL值,因此reference必须有初值;

      3  效率:reference比pointer更富效率,因为在使用之前不需要测试其有效性(pointer使用前通常需要测试其是否为null);

      可重写: pointer可以被重新赋值,reference只能表示它初始化时的对象;

      实现某些操作符时(例如operator[]),一般使用reference作为返回值;

     结论:当需要指向某个变量且绝对不会指向其他变量时,或者当一个操作符其语法需求无法用pointer完成时,选用reference,其他时候选用pointer;

条款2: 最好使用C++转型操作符

    C旧式转型(语法格式:(type)expression )的缺点:

        1 转型不能明确地指明意图(几乎允许任何类型之间的相互转换);

        2 难以辨识(小括号和对象名称在C++任何地方都有可能被使用);

   四个新的转型操作符:

      static_cast(static_cast<type> expression):  基本上和旧式转型相同,有同样的意义和限制;   

                        (与旧式转换的区别,旧式转换还可以模拟const_cast,reinterpret_cast,但是static_cast不行)

      const_cast: 用于改变表达式的常量性或变易性

      dymanic_cast: 用于执行继承体系中“安全的向下转型或跨系转型动作”,并得知转型是否成功,若失败,会以一个null指针(当转型对                           象为指针)或exception(当转型对象为reference)表现出来;

                          只能用于集成体系中,无法应用在缺乏虚函数的类型上,也不能改变类型的常量性;

                          不涉及继承机制的类型执行转换动作,可使用static_cast;

                          (第二个用途:找出被某对象占用内存的起始点)

      reinterpret_cast: 与编译平台息息相关,因此不具移植性

                          最常用用途是转换“函数指针”类型

     使用新式转型的优点: 1 严谨,易辨识;   2 较容易解析,编译器也因此得以诊断

条款3:最好不要使用多态(polymorphically)方式处理数组

     多态和指针算术不能混用,数组对象几乎总会涉及到所有的指针算术运算,所以数组和多态不能混用!

     继承最重要的特性就是通过指向“base class objects”的pointers或references,来操作“derived class objects”,当进行指针算术运算或删除对象数组操作时,指针的偏移大小是根据base class大小进行操作,会造成意想不到的结果。

条款4:非必要不提供default constructor

     ?????(书没看懂)

 

内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值