C++primer 第四章笔记 初稿

    xiaoxiao2021-03-25  70

    4.1 基本问题

    左值和右值

    自增自减运算符作用于左值对象,解引用和下标运算符得到左值;decltype作用于左值得到引用类型,右值得到普通类型;

    求值顺序

    优先级一般只规定了组合方式,并未规定求值顺序以及函数的调用顺序;只有 && || ?: 和, 规定了求值顺序。

    4.2 算术运算符

    -号对布尔运算无效;溢出运算;取余运算可以为负,但不可以为浮点数; m/(n)=n/(m)=(m/n) m%(n)=m%n , (m)%n=(m%n)

    4.3赋值运算符

    如果想右结合连续赋值,就必须满足变量类型相同或可相互转化;

    4.4 递增递减运算符

    优先选择前置递增而不是后置递增;后置递增运算符优先级高于解引用运算符;

    4.5 位运算

    位运算存在一定的升级扩容,但不会无限扩大;有时将某个01集合用一个二进制值存储,并用位运算进行操作。

    4.6 类型转换

    隐式转换的整型提升

    一般都是向更宽更大的方向变化;较大的char被转换成可容纳的int,unsigned int等中最小的一类;unsigned short与int按照具体所占空间决定;

    显示转换

    static_cast 静态转换

    当需要忽略精度时,使用显示静态转换,可以消除警告(相当于声明了就是要忽略精度);不可以对底层const转换;不可以实现非void类型指针之间的转换;

    const_cast 常量转换 只能改变底层const属性;

    dynamic_cast 动态转换

    具有运行时类型检查的特性,只能被使用在将变量转化为类的指针/类的引用/void*时;进行父类子类之间的显示转换时更加安全;

    reinterpret_cast 重解释转换

    可以实现指针的非void类型之间的转换;是一个非常危险的行为;
    转载请注明原文地址: https://ju.6miu.com/read-15082.html

    最新回复(0)