C++读书笔记
来源:互联网 发布:网络url地址是什么 编辑:程序博客网 时间:2024/05/17 13:45
C陷阱和缺陷
1.赋值符优先级比逻辑比较低,赋值表达式的结果为赋值后的结果
2.编译器扫描符号使用贪心法,尽量选择最长字符的符号串,如a---理解为a -- -而不是a - --
3.为兼容老版本编译器,不同符号之间最好加空格,如a=-1可能理解为a =- 1,应该改为a = -1
4.老版本编译器,8进制数以0开始,后面可以加超过8的数字,新版本会在编译时提示出错
5.单引号中放多个字符,赋值给一个单字符变量,只会取第一个字符,赋值给一个多字节变量,会将这些字符相加成一个大的整数,如char a='dd',a为’d',而int a='dd',a为'd'*2的8次方加'd'
6.() 结合性高于*
7.理解声明,声明符号的整体为声明的类型,以此推导出声明符号的类型,如float *g(),*g()整体为float型,推导出g为返回float*的函数
8.声明的类型转换,即把声明符号去掉,再整体加括号,如float *g(), g的类型为(float *())
9.添加括号可以解决运算符优先级问题,但是不易理解,所以记住算符优先级是有好处的
10 任何一个逻辑运算符的优先级低于任何一个关系运算符
11.移位运算符的优先级比算术运算符要低,但是比关系运算符要高
12.如果一个程序中包括语句:extern int a; 那么程序就必须在别的某个地方包括:int a;
13.static修改变量或函数,限制作用域为一个源文件内
14, char str[]和char* str的区别,前者本身为第一个元素的地址,后面的内容指向第一个元素的地址
15.外部符号(能够被链接器发现的符号),应当放在头文件中声明,在源文件中定义
16.数组类型作为参数传递给函数,无论形参定义为数组类型func(int list[])还是指针类型(func(int* list),都被退化为指针类型,即sizeof大小为指针大小,而不是数组长度
17.函数重载是C++新增特性,C语言不支持同名函数
18. typedef定义函数指针类型与函数类型,typedef void(TYPE)(), typedef void(*TYPE)();前者定义的变量即为声明变量,不能赋值函数,后者可以赋值为相同签名相同返回类型的函数指针
effective C++
1. C++四个次语言:C, OO, Template, STL
2.类内部static变量,都需要在类外进行定义,除整型变量可以直接在类中赋值,其它需要在定义中赋值
3.enum hack:利用enum中的符号作为整数值,给数组定义大小
4.单纯常量 ,最好以const对象或enum代替,形似函数的宏最好改用inline
5.const成员函数提供操作const对象的方法
避免模板膨胀:把模板无关的东西用继承的方式剥离到父类,确保模板的代码都是和模板参数相关的
- C读书笔记
- C读书笔记
- 读书笔记-c
- C读书笔记
- Expert C Programming读书笔记
- 《C语言程序设计》读书笔记
- 谭浩强C语言 读书笔记
- 《Effective C++》读书笔记
- C-PRIMER PLUS读书笔记
- C-PRIMER PLUS读书笔记
- 《Effective C++》读书笔记
- C++Primer读书笔记(一)
- 【读书笔记】c专家编程
- C Primer Plus 读书笔记
- 《Effective c++》读书笔记
- 《C程序设计语言》读书笔记20091106
- test_irq.c 源代码 读书笔记
- C ++ 读书笔记 顺序容器
- android 使用广播监听网络状态
- HTML5已定稿:将彻底颠覆原生应用?
- 数据结构之归并排序(递归实现)
- 关于计算机视觉的随谈
- 机器学习问题的十个实例
- C++读书笔记
- 【Leetcode】Symmetric Tree (Tree Judge)
- PHPStorm使用经验
- poj1050 To the Max (动态规划)
- Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
- 【Leetcode】Balanced Binary Tree (Tree Judge)
- 关于推荐系统中的特征工程
- Servlet总结
- 第十一周项目6-回文、素数(输出1000以内所有回文数)