c++犯过的错

1、可访问性(是否可用)、可见性(作用域内是否存在)

2、volatile(嵌入式用的多) const

3、友元函数可以访问类的私有函数 目的 工厂方法 全局运算符 如 >> << () ||

4、static const 类定义时即可初始化

5、复制构造函数 赋值运算符 目地 复杂类型、指针类型的复制

6、转换构造函数 一个参数的构造函数

7、explicit 防止隐式类型

8、 const  在函数前则返回值是const的,在函数后,则函数里的值不可变,如果有修改变量,可以在这个变量的声明出加mutable

9、命名规范 

空行 {} 就近原则

分号后可以加空格 二元操作符的空格 前后都加,一元操作符可以不用

拆行时 操作符放在行首 *&紧靠变量名

10、c++ new分配的在堆,其它的在栈

11、c++ 宏用”#”号连接

12、++在后面时返回原时值,循环的表达式里有取余,或类似操作时要注意

13、取余要注意负数问题

14、左值是一个位置,右值是一个值

15、有符号数的右移位 不是可移植的

16、变量名与内存位置之间的关联并不是硬件提供,由编译器实现。硬件仍然通过地址访问内存位置

17、c语言只有传值方式,所以要用指针的指针

18、指针的初始化用&操作符,变量的值就是分配给变量的内存位置所存储的数值

19、访问指针地址所指内容 可以间接访问,或用解引用指针 *

20、segmentation violateion / memory falut  指针未初始化 gpf 一般保护性异常 bus error 总线错误 指针超边界

21、访问内存地址 *(int *)100 = 25 内存100地址处的值设为25

22、状态码和错误码分开

23、逻辑上可以处理的异常用错误码,否则抛出异常

24、初始化的先后顺序

25、stl set 一般用来保存不可变的元素,在vs2010以上版本里 setiterator都是const

26、某个数x的后i位  x%(10^i)

27、链式调用时要检查每一项的值是否存在

28、function argument expected 可能是函数名后没见()

29、无符号数减始终是无符号数,用a-b>0 来判断始终为真

30、malformer number near 非英文字符

31、unexpected symbol near “=”  结果是a=b后面一大段空白之后又跟着一个 =b

32、把一行过长的代码切割成多行,方便查错

原文地址:https://www.cnblogs.com/xdao/p/cpp_tips.html