c++ primer 读书笔记

2.基本内置类型

  • 带符号数与无符号数操作时,会变成无符号数。如,-1会变成255
  • 定义于函数体内的内置类型的对象如果没有初始化,则其值未定义。在函数体外默认是0。类的对象如果没有显示初始化,其值由类确定。
const int *p=nullptr;//p是一个指向整形常量的指针
constexpr int *q=nullptr;//q是一个指向整形的常量指针

typedef char *ps;
const ps cstr=0;//常量指针
const ps *p;//指向常量指针
//不能把别名带入理解,是错误的
  • auto会忽略顶层const,底层const会保留。auto赋值等号右边是一个引用时,auto类型是没有引用的。
  • decltype返回操作数的数据类型。如果表达式是一个变量,会返回变量的类型(包括const和引用),如果表达式内容是解引用操作,会得到引用类型;如果是加了括号的表达式,会得到引用

3.字符串、向量和数组

  • 不能把字面值直接相加
  • 使用数组作为一个auto变量的初始值时,推断得到的类型是指针而非数组
  • 用for语句处理多维数组时,除了最内层的循环外,其他所有的控制变量都应该是引用类型

4.表达式

  • static_cast:只要不包含底层const,都可以用来类型转化
  • const_cast: 只能改变对象的底层const性质(去掉或增加)
  • reinterpret_cast:强制转化,很危险

6.函数

  • 当用实参初始化形参时会忽略掉顶层const。形参的顶级const被忽略了。而底层const不会被忽略。
  • 如果形参数量未知,但类型相同,可以用标准库的initializer_list类型的形参,这是一个模板类型。
  • 调用一个返回引用的函数得到左值,其他类型得到右值。如果返回类型是常量引用,则不能给结果赋值。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容