C++常见知识点总结

本文总结了C++中的重要知识点,包括数据类型如枚举和结构,类型转换如static_cast和dynamic_cast,字符串处理,switch case用法,输出显示,以及指针和引用的区别与应用。特别强调了引用作为函数参数和返回值的优势,以及指针操作内存的潜在风险。
摘要由CSDN通过智能技术生成

数据类型

  1. 枚举类型enum
    enum MotorIndex {
   
      kLeftMotor = 0,
      kRightMotor = 1,
    };

枚举常量必须是整数类型,可以当变量直接使用。

  1. struct结构
   struct MotorStatus {
   
      float current;
      int16_t temperature;
      int16_t temperature_MCU;
      int16_t rpm;
      int32_t counter;
      int32_t counter_offset;
      uint8_t status;
      bool counter_reset;
      //类变量初始化
      MotorStatus() :
        rpm(0), counter(0), status(0), counter_reset(false)
      {
    }
    };
    MotorStatus motorstatus[2];
    motorstatus[0].current = 0;
  1. size_t
    使用size_t可能会提高代码的可移植性、有效性或者可读性。
    例:
    size_t size=sizeof(i);//用sizeof操作得到变量i的类型的大小,
    有时候会使用unsigned int,但是它有可能会影响设备的性能。

常见类型转换

  1. static_castdynamic_cast:
    前者提供的是编译时期的静态类型检测,后者提供的是运行时检测.dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。在类层次间进行上行转换,dynamic_cast和static_cast的效果是一样的;在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全
    static_cast: 1)完成基础数据类型,2)同一个继承体系中类型的转换 3)任意类型与空指针类型void*之间的转换。
    dynamic_cast:使用多态的场景,增加了一层对真实调用对象类型的检查

  2. const_cast
    用于取出const属性,把const类型的指针变为非const类型的指针,

  3. reinterpret_cast
    数据的二进制形式重新解释,但是不改变其值。这个操作符能够在非相关的类型之间转换。操作结果只是简单的从一个指针到别的指针的值的二进制拷贝。在类型之间指向的内容不做任何类型的检查和转换。
    如:

    int i; char *ptr="hello freind!"; i=reinterpret_cast<int>(ptr);
    static_cast<int>()....类似
  1. c_str()
    string.c_str()返回字符串指针 (ROS_INFO中经常用来输出%s)
  2. strcpymemcpy
    strcpy和memcpy都是标准C库函数,它们有下面的特点。
    strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。
    已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);
    memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
    这两个函数也可以作为类型转换的使用。
  3. atoi()和stoi()
    atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char类型的,而stoi()的参数是const string,不需要转化为 const char*;
    stoi()会做范围检查,默认范围是在int的范围内的,如果超出范围的话则会runtime error
    而atoi()不会做范围检查,如果超出范围的话,超出上界,则输出上界,超出下界,则输出下界
  4. to_string()
    std::to_string(1);
    将数值转化为字符串。返回对应的字符串。

字符串分割

  1. strtok函数
buf_spilt[0] = strtok(buf_c, delim1); 
data_n = strtok(NULL, delim1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值