C++ Primer 5e chapter 4
2015-08-20 15:29
309 查看
1、左值与右值,右值是对象的内容,左值为对象的内存地址;
2、条件判断中赋值运算符的优先级比逻辑运算符低,所以记得加括号;
3、++i,首先将i加1,然后将改变后的对象作为求值结果;i++,则相反;
4、*p++ = *(p++);
5、位运算在处理有符号数的时候,且为负值,如何处理依赖于机器,左移可能会改变符号位,所以尽量使用无符号数字做位运算;
6、int+unsigned int 时,无符号数字不小于有符号数时候,int会被转换为unsigned int,按照取模的方式,成为无符号数字;另外的情况,依赖于机器;
7、static_cast<double> j/i; 具有明确定义的类型转换,不包含底层const;转换为更大范围的数字,不在乎精度的丢失,转变void*;
8、dynamic_cast,用于RTTI,将基类的指针安全的转换为派生类的指针;或引用
9、const_cast,用于去掉或者添加底层const,如果真是一个const,则使用cast后写对象是未定义行为,常出现在重载函数中,方便复用常量函数;
10、reinterpret_cast; int* p; char*pc = reinterpret_cast<char*> p;该类型转换本质上依赖于机器,很容易出现错误,需要牢记转换后的char*是一个int*;
2、条件判断中赋值运算符的优先级比逻辑运算符低,所以记得加括号;
3、++i,首先将i加1,然后将改变后的对象作为求值结果;i++,则相反;
4、*p++ = *(p++);
5、位运算在处理有符号数的时候,且为负值,如何处理依赖于机器,左移可能会改变符号位,所以尽量使用无符号数字做位运算;
6、int+unsigned int 时,无符号数字不小于有符号数时候,int会被转换为unsigned int,按照取模的方式,成为无符号数字;另外的情况,依赖于机器;
7、static_cast<double> j/i; 具有明确定义的类型转换,不包含底层const;转换为更大范围的数字,不在乎精度的丢失,转变void*;
8、dynamic_cast,用于RTTI,将基类的指针安全的转换为派生类的指针;或引用
9、const_cast,用于去掉或者添加底层const,如果真是一个const,则使用cast后写对象是未定义行为,常出现在重载函数中,方便复用常量函数;
10、reinterpret_cast; int* p; char*pc = reinterpret_cast<char*> p;该类型转换本质上依赖于机器,很容易出现错误,需要牢记转换后的char*是一个int*;
相关文章推荐
- C++中外部程序的调用方法
- 黑马程序员-[OC语言] 第五篇:block使用、协议概述
- C/C++常用字符类型char、CSting、string转化
- C++ Primer : 第十一章 : 关联容器示例: 一个单词转换的map
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之二 - 断言
- C/C++中如何获取数组的长度?
- C++版的mapreduce程序运行在hadoop上(1)
- Struct结构在C和C++中的区别
- Unicode与UTF-8互转(C语言实现)
- 对C++临时对象的内存位置的研究
- error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
- C++宏的作用与C#里宏的代替(三)
- C++静态库编译
- C语言中的传值调用
- C++内存机制中内存溢出、内存泄露、内存越界和栈溢出的区别和联系
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之一 - 初始gtest
- Item 3:尽量使用常量 Effective C++笔记
- Item 2:避免使用define Effective C++笔记
- Item 1:将C++视作一系列的语言 Effective C++笔记
- 在VIM下写C++能有多爽?