6.避免特定编程语言的陷阱
                        目录
                        
                    
                    
                C++
- 
每种编程语言都有各自的缺陷,C++陷阱尤其多。 
- 
数组/内存越界:对于 C++来讲 vector 代替数组,用 string 代替 char* 
- 
野指针 - 没有初始化或者己经被 delete (java/python 会抛异常,属于第二类错误,对于 C++属于第三类错误);能调用,不抛异常;
- 应对:定义针时初始化,delete 时赋值为 nullptr,使用智能指针。
 
- 
内存泄露 - 忘记 delete,中途 return 或抛出异常,循环中 break;
- 应对:使用智能指针,用统一的方式处理资源释放问题 (goto + exit)
 
- 
非类型安全 - 数组作为参数传递时长度信息丢失(java, python 没这个问题)
- 虚函数的默认实参是静态绑定,而虚函数本身是动态绑定
- 用下标引用 map 的键时,如果该键值不存在,会新生成一个(python 会抛异常)
- map<int,int> m;
- int i= m[2]; // m[2] 为 0;违背直觉,Supprise。
 
1 Python
可迭代对象,第二次迭代出问题。