Effective C++学习笔记 第一弹 1-4
2011-08-13 19:13
316 查看
条款1 尽量以const和inline取代#define
1、当这么做时 #define PI 3.1415
PI 在编译之前会被预处理器移走,而并没有进去符号表,当调试时,你能看到3.1415,但是找不到PI。
2、常量指针
常量指针:常量指针就是指向常量的指针,指针所指向的地址的内容是不可修改的。
如 const int *p;
int a=1;
int b=2;
p = &a;
*p = 3; //error 常量指针指向的内容不能被修改
p =&b; //ok 常量指针指向的地址可以被修改
3、指针常量
指针常量:指针常量就是是指针的常量,它是不可改变地址的指针,但是可以对它所指向的内容进行修改
如
int * const p = NULL;
int a = 1;
int b = 2;
p = &a;
p = &b; //error p不能被修改 指向的地址不能被修改
*p = b;//ok 内容可以被修改
4、指向常量的常量指针
如 const int * const p = NULL;
既不能修改指向 也不能修改内容
5、当需要定义一个class专属常量 可以这么做
/*----------------.h---------------------*/
class GamePlay
{
private:
//static const int NUM; error:只是定义,在声明之前不能使用,必须先初始化
static const int NUM = 4; //static:因为所有对象公用NUM const防止NUM被修改
int scores[NUM];
};
/*----------------.cpp--------------------*/
const int GamePlay::NUM = 4; //假如在.h文件未使用 可以在.CPP文件中初始化
当编译器不允许类内初始化时 可以改用枚举类型
如
class GamePlay
{
private:
enum { NUM = 5 };
int Score[NUM];
};
6、用inline代替宏命令
较小的程序推荐用内联函数,但是否真的内联是由编译器决定的。
条款2 用<iostream>代替<stdio.h>
不解释
条款3 尽量以new和delete取代malloc和free
后者只是分配和释放内存,对构造函数和析构函数一无所知,其中没有任何对象被初始化
更不要混合使用
条款4 尽量使用C++风格的注释形式
也就是用//俩杠 代替 /**/杠星星杠 因为后者在嵌套的时候会出现意外
相关文章推荐
- 《Effective C++ 》学习笔记-第六章 条款33:避免遮掩继承而来的名称 Avoid hiding inherited names
- 《Linux命令行与shell脚本编程大全》 第一、二章 学习笔记
- Effective C++学习笔记:初始化列表中成员列出的顺序和它们在类中声明的顺序相同
- Effective C++学习笔记目录
- Effective c++学习笔记——条款5:了解C++默默编写并调用哪些函数
- 暑假-学习第一阶段学习笔记小结
- Effective C++学习笔记——条款03:尽可能使用const
- Effective C++ 学习笔记(26)
- PADS菜菜鸟--第一阶段学习的笔记
- Effective C++学习笔记之“尽量使用初始化而不要在构造函数里赋值”
- Effective C++学习笔记——构造/析构/拷贝运算
- effective c++ 学习笔记2----auto_ptr
- effective c++学习笔记
- 【Effective C++ 学习笔记】Item1-Item4
- IKE学习笔记2(IKE交换第一阶段)
- Effective C++学习笔记之第四章(2)
- Effective C++学习笔记 (10)
- Effective C++学习笔记:写operator new和operator delete时要遵循常规
- Effective C++ 学习笔记:为含指针变量的类声明一个拷贝构造函数和一个赋值操作符
- 《Effective C++ 》学习笔记-第六章 内存简单概念 以及 空类(empty class 条款39略微提到)