Effective C++学习笔记 第一弹 1-4
来源:互联网 发布:网络大电影杀小姐 编辑:程序博客网 时间:2024/06/15 15:08
条款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++学习笔记 第一弹 1-4
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记
- 《Effective C++》学习笔记(1)
- 《Effective Objective-C 2.0》学习笔记1
- 《Effective C++》学习笔记(1~3)
- 《Effective STL》学习笔记(第一部分)
- 《Effective STL》学习笔记(第一部分)
- 学习笔记:Effective Objective-C
- Effective Objective-C学习笔记
- <<Effective C++>>笔记4
- <<Effective C++>>笔记1
- Effective-Objective-C学习笔记1-熟悉Objective-C
- Effective学习笔记1
- 《more effective c++》笔记4
- 《Effective C++》学习笔记(一)
- Struts2从后台传递数据到前台的主要方法和流程
- 数据库管理常用sql语句
- “选择算法”
- 《敏捷开发:高效程序员的45个习惯》 学习摘要 2
- struts1和struts2的标签引入
- Effective C++学习笔记 第一弹 1-4
- struts2配置文件详解
- Effective C++学习笔记 第二弹 5-10
- spring集成compass中出现的问题和总结
- SqlServer创建删除数据库,表,约束
- Effective C++学习笔记 第三弹 11-18
- Linux2.6.34下 USB驱动(U盘\USB鼠标、键盘)
- Effective C++学习笔记 第四弹 18-28
- Direct3d template (camera)