码迷,mamicode.com
首页 >  
搜索关键字:effective    ( 1955个结果
Effective C++:条款32:确定你的public继承塑模出is-a关系
(一) public继承意味着“is-a”关系。它的意思是:如果B以public形式继承自A,那么B类型对象肯定是一个A对象,反之不成立。A是B的一种抽象,B是A的特例。任何使用A的地方,都能使用B。 (二) public继承意味着“is a”(是一种)关系: (1)任何一个继承类对象也是一个基类对象; (2)任何可以出现基类对象的地方也可以出现一个继承类对象(例如函数的...
分类:编程语言   时间:2014-06-27 10:28:19    阅读次数:220
Effective C++:条款31:将文件间的编译依存关系将至最低
(一) 假设你对C++程序的某个class实现文件做了些轻微改变,修改的不是接口,而是实现,而且只改private成分。然后重新建置这个程序,并预计只花数秒就好,当按下“Build”或键入make,会大吃一惊,因为你意识到整个世界都被重新编译和链接了!问题是在C++并没有把“将接口从实现中分离”做得很好。 避免陷入这种窘境的一种有效的方法就是本条款要提出的内容:将文件间的编译依存关系降至最低....
分类:编程语言   时间:2014-06-26 14:02:11    阅读次数:279
Effective C++:条款30:透彻了解inlining的里里外外
(一) inline函数,可以调用它们而又不需蒙受函数调用所招致的额外开销。 inline函数背后的整体观念是,将“对此函数的每一个调用”都已函数本体替换之,这样做可能增加你的目标码(object code)大小。在内存有限的机器上,过度inline会造成程序体积太大,导致换页行为,降低缓存的命中率等一些带来效率损失的行为。如果inline函数的本体很小,编译器针对“函数本体”所产生的码可能比...
分类:编程语言   时间:2014-06-26 07:25:18    阅读次数:142
effective c++ 条款3 use const whereever you can
1 const 传达的意思应该是这个变量是常量不能更改2 const 在 * 左边表示数据是const,在右边表示指针是const // char greeting[] = "hello"; char* p = greeting; //const *: const data //...
分类:编程语言   时间:2014-06-25 11:12:18    阅读次数:229
Effective C++:条款29:为“异常安全”而努力是值得的
(一)先看下面这些代码: class PrettyMenu { public: void changeBackground(istream& imgSrc); private: Mutex mutex; //由于这个class希望用于多线程环境,所以它有这个互斥器作为并发控制之用 Image* bgImage; //目前的背景图像 int imageChan...
分类:编程语言   时间:2014-06-25 08:35:48    阅读次数:339
Effective C++:条款25:考虑写出一个不抛异常的swap函数
(一) 缺省情况下swap动作可由标准程序库提供的swap算法完成: namespace std { template void swap(T& a, T& b) { T temp(a); a = b; b = temp; } }这个函数是异常安全性编程的核心,并且是用来处理自我赋值可能性的一个常见机...
分类:编程语言   时间:2014-06-25 00:30:27    阅读次数:336
Effective C++:条款26:尽可能延后变量定义式的出现时间
(一) 那么当程序的控制流到达这个变量定义时,变承受构造成本;当变量离开作用域时,便承受析构成本。 string encryptPassword(const std::string& password) { using namespace std; string encrypted; if(password.length() < MinimumPasswordLengt) { t...
分类:编程语言   时间:2014-06-24 23:24:54    阅读次数:297
Effective C++:条款24:若所有参数皆需类型转换,请为此采用non-member函数
(一) 假设一个class用来表现有理数,允许整数“隐式转换为”有理数似乎很合理。 class Rational{ public: Rational(int numerator = 0, int denominator = 1); //刻意不为explicit;允许int-to-Rational隐式转换 int numerator()const; int den...
分类:编程语言   时间:2014-06-24 22:30:51    阅读次数:270
Effective C++:条款28:避免返回 handles 指向对象内部成员
(一) 有时候为了让一个对象尽量小,可以把数据放在另外一个辅助的struct中,然后再让一个类去指向它。看下面的代码: class Point { public: Point(int x, int y); void setX(int newVal); void setY(int newVal); }; struct RectData { Point ulhc; Point lrhc...
分类:编程语言   时间:2014-06-24 22:17:30    阅读次数:240
Effective C++:条款27:尽量少做转型动作
(一)C风格旧式转型: (T)expression T(expression) (二)C++提供四种新式转型: (1)const_cast(expression):去除表达式的常量性,是C++中唯一能做此操作的转型操作符。 (2)dynamic_cast(expression):主要用来执行“安全向下转型”,即用来决定某对象是否归属继承体系中的某个类型。它是唯一无法由旧式...
分类:编程语言   时间:2014-06-24 20:57:53    阅读次数:253
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!