上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页
摘要: 只要定义一个变量,而其类型带有一个构造函数或析构函数, 那么当程序的控制流到达这个变量定义时,变承受构造成本;当变量离开作用域时,便承受析构成本。 //这个函数过早定义变量“encrypted” std::string encryptPassword(const std::string& password) { using namespace std; ... 阅读全文
posted @ 2012-01-25 14:33 lidan 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 缺省情况下swap动作可由标准程序库提供的swap算法完成: namespace std{ template<typename T> void swap(T& a, T& b) { T temp(a); a = b; b = temp; } ... 阅读全文
posted @ 2012-01-20 23:47 lidan 阅读(1193) 评论(0) 推荐(0) 编辑
摘要: 令class支持类型隐式转换通常是个糟糕的主意。当然这条规定在建立数值类型时,有例外。假设一个class用来表现有理数,允许整数 “隐式转换为”有理数似乎很合理。 class Rational{ public: Rational(int numerator = 0, int denominator = 1); //刻意不为explicit;允许int-to-... 阅读全文
posted @ 2012-01-20 10:36 lidan 阅读(526) 评论(0) 推荐(0) 编辑
摘要: 有个class来表示网页浏览器: class WebBrowser { public: void clearChache(); void clearHistory(); void removeCookies(); protected: private: }; 许多用户会想一整个执行所... 阅读全文
posted @ 2012-01-19 00:10 lidan 阅读(941) 评论(0) 推荐(0) 编辑
摘要: 为什么不采用public成员变量 首先,语法一致性考虑,客户唯一能访问对象的方法就是通过成员函数,客户不必考虑是否该记住使用小括号()。 其次,使用函数可以让你对成员变量的处理有更精确的控制。如果成员变量是public,每个人都可以读写它,但是如果你也函数 取得或设定其值,你就可以实现“不准访问”、“只读访问”,以及”读写访问”甚至”唯写访问“: class AccessLeve... 阅读全文
posted @ 2012-01-18 10:00 lidan 阅读(835) 评论(0) 推荐(0) 编辑
摘要: 考虑有理数的class: class Rational { public: Rational(int numerator = 0, int denominator = 1); protected: private: int n, d; friend Rational operator*(const ... 阅读全文
posted @ 2012-01-17 23:20 lidan 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 缺省情况下c++以by value 的方式传递对象(或来自)函数。函数参数是以实参的副本为初值,用函数获得的也是函数返回值的一个副本 这些副本由对象的copy构造函数产出,这可能使得pass-by-value成为昂贵的操作: class Person { public: Person(); virtual ~Person(); ... 阅读全文
posted @ 2012-01-17 16:04 lidan 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 设计优秀的classes和是一项艰巨的工作,因为设计好的types是一项艰巨的工作。设计出至少像c++内置类型一样好的classes。 几乎每一个class都要求面对以下提问,回答往往导致你的设计规范: 1,新type的对象应该如何创建和销毁? 包括构造和析构函数,内存分配和释放函数(operator new, operator delete,operator new[], o... 阅读全文
posted @ 2012-01-17 14:34 lidan 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 如果客户企图使用某个接口而却没有获得他所预期的行为,这个代码就不该通过编译,如果代码通过了编译, 它的作为就该是客户所想要的。 class Date { public: Date(int month, int day, int year); ... }; 第一,以错误的次序传递参数: Date(3... 阅读全文
posted @ 2012-01-16 22:32 lidan 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 假设一个函数用来揭示处理程序的优先权 int priority(); 另一个函数用来在动态分配的Widget上进行某些带有优先权的处理: void processWidget(std::tr1::shared_ptr<Widget> pw, int priority); 考虑调用processWidget: processWidget(new Widget, pri... 阅读全文
posted @ 2012-01-16 13:56 lidan 阅读(274) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页