条款01:视C++为一个语言联邦
1.C 包含 区块,语句,预处理器,内置数据类型,数组,指针
2.Object-Oriented C++ C with Classes,包括构造函数和析构函数,封装,继承,多态,virtual函数,动态绑定 等。
3.TemplateC++ 泛型编程
4.STL 容器,迭代器,算法以及函数对象。
条款02 尽量以const,enum,inline 替换#define
#define ASPECT_PATIO 1.653
记号也许从未被编译器看得见,也许在编译器开始就被移走了,原因:你所使用的名称可能并未进入记号表.
解决之道以一个常量替换上述的宏(#define):
const double AsepetRatio =1.63;
两种特殊情况:
1.定义常量指针时候通常放到头文件内,必须写两次
const char* const authorName ="Scott Meyers";
还可以写成
const std::string authorNmae(
#include <string>
const std::string authorName("Scott Meyers");
#include "stdafx.h"
#include "test2.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
cout<<authorName;
return 0;
}
2. 常量作用域
为了将常量的作用域限制于class内,你必须让它成为class 的一个成员 member,确保此常量,至多只有一份实体,必须让它成为一个static成员:
class GamePlayer{
private:
static const int NumTurns = 5;
int scores[NumTurns];
};
明天继续!