代码改变世界

C++ 编程规范笔记

2013-10-18 20:04  chjxx  阅读(204)  评论(0)    收藏  举报
  1. 尽量在定义变量的时候初始化该变量。
  2. 修饰符的位置可能引起误解 int* x, y或者int *x,y
  3. 运算符的结合性(由右到左):~ !++ -- sizeof + - * & || :?
  4. 运算顺序表达不清楚的时候尽量使用括号()
  5. 函数的设计应该注意的事项:
    • 不要省略参数的名字,不要省略返回值的类型
    • 必要的时候使用const 修饰符
    • 区分“值传递”和"引用传递“
    • 对return 语句进行检查:a.return 不可返回“栈空间”的指针或引用,“栈空间”的变量在函数结束的时候被销毁,b.弄清楚返回的是“值”,“指针”还是“引用”,c.如果返回的是对象应该考虑效率问题。
    • 当函数里含有static变量时应该特别注意“记忆状态”
    • 使用assert,有助于找到错误愿意
    • “引用”和“指针”的区别
  6. 内存管理:
    • 内存分配的三种方式:a.静态存储区分配,内存在程序编译的时候就已经分配好,在整个程序运行期间都存在。如全局变量,static变量等。b. 栈空间,函数内的局部变量在栈空间上创建,函数结束时这些存储单元自动释放。c.堆空间动态内存分配,程序在运行的时候使用malloc或new来申请的内存,程序员决定什么时候释放这些内存。
    • 常见的内存错误:a.内存没有分配成功却使用它,b.内存分配成功但没有初始化就引用,c.越界操作,d.忘记释放内存,造成内存泄露,e.引用释放了的内存:返回栈空间的指针或引用;free或delete之后没有把指针置为NULL,造成野指针
    • 指针和数组的区别
    • 指针参数是如何传递内存的
    • free和delete是怎样处理指针的
    • 指针消亡了不意味着它所指的内存会被自动释放
    • 内存被释放不意味着指向它的指针消亡或置为NULL
    • 杜绝野指针
  7. the big-three:
    • 构造函数
    • 析构函数
    • 赋值函数

高质量c/c++编程指南 林锐