码迷,mamicode.com
首页 >  
搜索关键字:effective    ( 1955个结果
Effective C++ Item 46 需要类型转换时请为模板定义非成员函数
经验:当我们编写一个 class template, 而它所提供之"与此 template 相关的"函数支持"所有参数之隐式类型转换"时,请将那些函数定义为 "class template内部的 friend 函数"。 示例: template class Rational{ public: Rational(const T &numerator = 0, const T &denominator = 1) // Item 20 对于自定义类型以passed by referenc...
分类:编程语言   时间:2014-07-14 13:52:39    阅读次数:173
Effective C++ Item 43 学习处理模板化基类内的名称
经验:可在derived class templates 内通过 "this->" 指涉 base class templates 内的成员名称,或藉由一个明白写出的 "base class 资格修饰符"完成。 示例: class CompanyA{ public: //... void sendCleartext(const std::string &msg); void sendEncrypted(const std::string &msg); //... }; class Company...
分类:编程语言   时间:2014-07-14 13:20:25    阅读次数:263
Effective C++ Item 42 了解 typename 的双重意义
经验:声明 template 参数时,前缀关键字 class 和 typename 可互换。请使用关键字 typename 标识嵌套从属类型名称; 示例1: template void print2nd(const C &container){ C::const_iterator *x;//歧义。如果const_iterator是个static成员变量,x是个global 变量,这里的 *就是乘 //... } 示例2: template void pr...
分类:编程语言   时间:2014-07-14 11:06:02    阅读次数:206
回顾经典Effective C++ 1
c++ 联邦语言: typedef { unit C; unit Object-Oriented C++; unit Template C++; unit STL; }; notice: C++高效编程取决于你使用C++的哪一个部分。 eg:pass-by-reference and pass-by-value. c:内置类型value kill reference...
分类:编程语言   时间:2014-07-13 00:14:37    阅读次数:282
Effective C++ Item 34 区分接口继承与实现继承
接口继承和实现继承不同。在 public 继承下, derived classes 总是继承 base class 的接口 class Shape{ public: virtual void draw() const = 0; virtual void error(const std::string &msg); int objectID() const; //... }; class Rectangle: public Shape{...}; class Ellipse: public Sha...
分类:编程语言   时间:2014-07-12 23:42:27    阅读次数:251
Effective C++ Item 29 为”异常安全”而努力是值得的
经验:异常安全函数即使发生异常也不会泄漏资源或允许任何数据结构败坏。这样的函数区分为三种 可能的保证: 基本型-->发生异常,程序处于某个合法状态 强烈型-->发生异常,程序处于原先状态 不抛异常型-->承诺绝不抛出殿堂 示例: class PrettyMenu{ public: //... void changeBackground(std::istream &imgSrc); //改变背景图像 //... private: Mutex mutex; //互斥器 Image *bgI...
分类:编程语言   时间:2014-07-12 21:35:16    阅读次数:298
Effective C++ Item 32 确定你的 public 继承塑模出 is-a 关系
经验:"public继承"意味 is-a。适用于 base classes 身上的每一件事情一定也适用于 derived classes 身上, 因为每一个 derived classes 身上,因为每一个 derived class 对象也都是一个 base class 对象。 示例: class Person {...}; class Student: public Person {...}; void eat(const Person &p); //任何人都会吃 void study(const ...
分类:编程语言   时间:2014-07-12 21:18:25    阅读次数:230
Effective C++ Item 31 降低文件间编译依存关系
经验:支持”编译依存性最小化“的一般构想是:相依于声明式,不要相依于定义式。 基于此构想的两个手段是 Handle classes 和 Interface classes. 示例:相依于定义式 #include #include "date.h" #include "address.h" class Person{ public: Person(const std::string &name, const Data &birthday, const Address &addr); st...
分类:编程语言   时间:2014-07-12 19:39:46    阅读次数:347
Effective C++ Item 36 绝不重新定义继承而来的 non-virtual 函数
经验:绝对不要重新定义继承而来的 non-virtual 函数 --> Item 7 "为多态基类声明 virtual 析构函数" 是本条款的特例 示例: class B{ public: void mf(); //... }; class D: public B{ public: void mf(); // 遮掩了B::mf,Item 33 名称遮掩规则 } D x; B *pB = &x; D *pD = &x; pB->mf(); // 调用 B::mf pD->mf(); // 调用 ...
分类:编程语言   时间:2014-07-12 19:09:10    阅读次数:234
Effective C++ Item 33 避免遮掩继承过来的名称
经验:derived classes 内的名称会遮掩 base classes 内的名称。在 public 继承下从来没有人希望如此。 C++ 的名称遮掩规则所做的唯一事情就是: 遮掩名称 derived class 作用域被嵌套在 base class 作用域里 class Base { private: int x; public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void mf3(); v...
分类:编程语言   时间:2014-07-12 19:05:42    阅读次数:224
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!