(一) 缺省情况下swap动作可由标准程序库提供的swap算法完毕: namespace std { template<typename T> void swap(T& a, T& b) { T temp(a); a = b; b = temp; } } 这个函数是异常安全性编程的核心,而且是用来处理自我赋值可能性的一个常见机制 可是对某些类型而言,这些复制动作无一必要:当中基本的就是"以指针指向一个对象,内含真正数据"那种类型.多为"pimpl手…
条款18:让接口更容易的被使用,不易误用 接口设计主要是给应用接口的人使用的,他们可能不是接口的设计者,这样作为接口的设计者就要对接口的定义更加易懂,让使用者不宜发生误用,例如对于一个时间类: class Date{ public: Data(int month, int day, int year){ .... } }: 在应用Date类的时候,对于Date的三个参数我们很容易用错,因为它们的类型相同,我们可能会将实参20传给month等,我们在设定接口的时候要保证接口使用过程中不管怎么用都会…
条款01:视C++为一个语言联邦(View C++ as a federation of languages.) C++主要的四个次语言: (1)C.说到底C++仍是以C为基础:(2)Object-Oriented C++.这部分也就是C with Classes所诉求的:类.封装.继承.多态.虚函数:(3)Template C++.这是C++的泛型编程(generic programming)部分:(4)STL.STL是个template程序库,是非常特殊的一个.它对容器.迭代器.算法以及函数…
01:视c++为一个语言联邦 为了理解C++,必须要认识其主要的次语言: C 说到底C++仍是以C为基础.区块,语句,预处理器,内置数据类型,数组,指针统统来自C. Object-Oreinted C++ 这一部分是面向对象设计之古典守则在C++上的最直接实施.类,封装,继承,多态,virtual函数等等... Template C++ 这是C++泛型编程部分. STL STL是个template程序库.包含容器(containers),迭代器(iterators),算法(algorithms)…