C 11学习笔记 3

发布 2022-06-17 16:12:28 阅读 1376

ptr->mem等价于(*ptr).mem

位运算符作用于整数。

关于符号位如何处理没有明确的规定,所以强烈建议仅将位运算符用于处理无符号型。

sizeof(type)

sizeof expr

返回的是size_t

sizeof运算符的结果部分依赖作用类型:

对char的表达式结果是1

引用时引用对象所占的空间大小。

对指针的得到的是指针本身的大小。

对解引用的到的是指针所指对象的大小 ,指针不需有效。

对数组是真个数组的大小。

对string对象或vector对象,只返回该类型固定部分的大小,不会计算对象中的元素占用的空间。

可以用数组大小除以数组元素大小来计算数组元素个数。

整型提升就是转换成int,否则是unsigned int

数组一般会转换成指针。

当数组被用做decltype , sizeof , typeid上述转换不发生。

指向任意非常量的指针能转换成 void*

指向任意对象的指针能装好成 const void*

继承类间还有一种转换方式。

允许指向非常量的指针或引用转换成常量。

类类型可以定义有编辑器自动执行的转换,但是每次只能执行一种。

dynamic_cast支持运行时类型识别。

static_cast

const_cast 只能改变运算对象的底层const,去掉const属性。

reinterpret_cast 通过为运算对象的位模式提供较低层次上的重新解释,依赖于机器。

int*ip;

char *pc = reinterpret_cast (ip);/从底层进行重新解释。

C11学习笔记 5

参数传递时,如果是引用类型,它将绑定到对应的实参上,否者,将实参的值拷贝后赋给形参。引用可避免拷贝,如果不需要改变参数,最好定义成常量引用。和其他初始化一样,当用实参初始化时会忽略顶层const,当形参有顶层const时,传给它常量对象或非常量对象都可以。我们可以用非常量初始化一个底层const对象...

C 11学习笔记 11

动态分配的内存,只有在显式释放是,这些对象才会销毁。但是标准库中的两智能指针可以确保自动释放。除了静态内存和栈内存,每个程序还拥有一个内存池。这部分内存被称作自由空间或堆。静态内存用来保存局部static对象 类static数据成员以及定义在任何函数之外的变量。栈内存用来保存定义在函数没得非stat...

C 11学习笔记 16

tuple是类型pair的模板。不同tuple类型的成员类型也不同,但一个tuple可以有任意数量的成员。每个确定的tuple类型的成员数目是固定的。当我们希望将一些数据组合成单一对象,但有不想麻烦地定义一个新数据结构来表示时,tuple是非常有用的。快速而随意 的数据结构 tuple类型及其伴随类...