Effective C++(1-4)
来源:互联网 发布:睡眠记录的软件 编辑:程序博客网 时间:2024/05/03 20:33
1、C++由以下四个层次组成:
1.1 纯C
1.2 Object-Oriented C++
1.3 Template C++
泛型编程,包括template metaprogramming(TMP,模板元编程)
1.4 STL
包括容器(containers)、迭代器(iterators)、算法(algorithms)和函数对象(funciton objects)
2.尽量以const,enum,inline替换#define
2.1 采用define时,记号名称不会进入符合列表,不易调试;对于单纯常量,最好采用const对象或enum。
2.2 对于形似函数的宏,最好改用inline函数替换#define,易理解
3.尽可能使用const
3.1 如果关键字const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;
如果出现两边,表示被指物和指针两者都是常量。
char greeting[] = "Hello";
char*p = greeting; //non-const pointer,non-const data
const char*p = greeting; //non-const pointer,const data
char* const p = greeting; //const pointer,non-const data
const char* const p = greeting; //const pointer,const data
3.2 const 成员函数
两个成员函数如果只是常量性不同,可以被重载。
class TextBlock
{
public:
const char& operator[](int iPosition) const //for const object
{return text[iPosition];}
char& operator[](int iPosition) //for non-const object
{return text[iPosition];}
private:
std::string text;
}
void print(const TextBlock& ctb)
{
std::cout<<ctb[0]; //call const TextBlock::operator[]
}
void print(TextBlock& ctb)
{
std::cout<<ctb[0]; //call non-const TextBlock::operator[]
}
3.3 当const和non-const成员函数有着实质等价的实现时,令non-const版本调用const版本可避免代码重复。
3.4 C++中,在成员变量前加mutable(可变的),可以使该成员变量在const成员函数内也能被修改。
4.对象初始化
4.1 C++中,对象的成员变量的初始化发生在进入构造函数本体之前。
4.2 C++成员初始化顺序:base class早于derived class,而class的成员变量按其声明次序被初始化。
4.3 C++对"定义于不同编译单元内的non-local static对象"的初始化次序无明确定义。
4.4 构造函数最好使用成员初值列(member initialization list),而不要在构造函数本体内使用赋值操作。
初值列列出的成员变量,其排列次序应该和它们在class中的声明次序相同。
4.5 为避免“跨编译单元之初始化次序”问题,请以local static对象替换non-local static对象,如下:
class FileSystem {...};
FileSystem& tfs()
{
static FileSystem fs;
return fs;
}
- Effective C++(1-4)
- Effective C++(条款1-4)
- <<Effective C++>>笔记4
- 《effective c++》读书笔记4
- <Effective C++>读书笔记-4
- 再看Effective C++(1)
- <<Effective C++>>笔记1
- Effective C++(1)读书笔记
- 《effective c++》读书笔记1
- <Effective C++>读书笔记-1
- 《Effective C++》让自己习惯C++:条款1-条款4
- 《more effective c++》笔记4
- 《Effective C++》 Reading Note 4
- <<Effective C++>>读书笔记(4)
- 《Effective C++》 Reading Note 1
- 读More Effective C++(1)
- C++1(Effective C++)
- Effective Objective-C chapter-1
- C#.NET 缩略图处理类CutImage
- J2EE 之读书笔记
- C#.NET 日期操作类
- Using MFC MBCS/Unicode Conversion Macros
- opener
- Effective C++(1-4)
- 【转】通过usb连线组局域网
- 【软件测试自动化-QTP NOTE 8】 == 描述性编程(Descriptive Programming)-Finial ==
- 海量数据整理
- 斯坦德科技
- 3 进程管理
- Windows vs.Ubuntu—戴尔的裁决
- C# Asp.Net分页控件1.2
- 常用网站