zoukankan      html  css  js  c++  java
  • C++小细节

    持续更新......

    • cin不仅遇到EOF会返回无效状态(通常用来终止循环),遇到无效输入的时候也会返回无效状态,比如向整型变量输入字符。

    • char类型的大小和机器有关,最小8位,大多数机器字节(byte)是8位,byte是可寻址的最小内存块,所以地址的尺寸就是byte的尺寸。

    • charsigned char或者unsigned char,具体取决于编译器

    • 无符号类型类型赋值超出范围时,取模。比如unsigned char,赋值对256取模。

    • 有符号类型类型赋值超出范围时,UB

    • 有符号数和无符号数混合运算(size一样,size不一样,会转换到dasize的类型),有符号数会被转化为无符号数,char例外,所以要避免有符号数和无符号数混合运算。

    • 字面值(如13)没有负数,-13只是对字面值取负。

    • 字符串字面值(如"hello"),实际上是由常量字符组成的数组

    • 转义字符后跟的是8进制或者16进制数字,如8是错误的,x8是正确的。

    • int a{1.211},会报错

    • 标识符不要以两个下划线或者一个下划线加大写字母开头。

    • vector下标运算符只能访问存在的对象,不能用于添加对象

    • 任何一种影响vector容量的操作,都会导致原先的迭代器失效

    • 两个指针没有指向同一个对象,或者同一个数组,那么两个指针做运算是UB

    • 数组在以下几种情况下不会转换成指针:

      1. decltype
      2. 作为取地址符&,int a[10]; /*数组a的指针*/ int (*p)[10] = &a;
      3. sizeof
      4. typeid
    • 左值使用的是对象的身份(位置),右值使用的是对象的内容(值)。

    • decltype(左值)返回一个引用类型

    • m%n结果符号匹配m。C++11

    • 重载函数无法区分顶层形参,只能区分底层const和const引用

    • 块内声明函数会覆盖掉块外的函数,而不会构成重载

    • 给定作用域中的一个形参只能被赋予一次默认实参。

    • const成员函数,const修饰的是this指针,所以const成员函数如果返回this,那这个指针是底层const的。

    • 友元函数的的声明只是权限的声明,并不是真正的函数声明。

    • 编译器编译类的时候,先处理成员和函数声明,最后处理函数定义,无论是否定义在类外。

    • 类的静态成员变量必须在类内声明,类外定义。即使该变量是const或者constexpr也最好这样。

  • 相关阅读:
    docker安装kafka
    Prometheus警报
    MongoDB介绍
    SpringMvc中几个注解
    无DNS安装VCSA
    互联网本质
    什么是领导力
    58沈剑_一分钟专栏
    以数据库思维理解区块链
    区块链的4个实际应用
  • 原文地址:https://www.cnblogs.com/rookiezjz/p/12553142.html
Copyright © 2011-2022 走看看