2013年6月3日
摘要: inline函数的本质是对函数的每一个调用都以函数本体替换它,它的优点主要有:1)没有一般函数的调用成本;2)方便编译器进行优化:编译器最优化机制通常被设计用来浓缩那些“不被函数调用”的代码,所以当你inline某个函数,编译器就有能力对函数本体执行语境相关最优化,大部分编译器不会对着一个“outlined函数调用”动作执行如此之最优化。然而,对于inline,还有下面几个问题是需要注意的:1)由于inline真正的操作时用函数本体代替调用的代码,因此容易造成程序体积过大,这样一来,代码膨胀可能造成额外的换页行为,降低指令高速缓存装置的击中率,引发效率损失;反之,如果函数的本体很小,编译器针对 阅读全文
posted @ 2013-06-03 22:26 Sophia-呵呵小猪 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 定义类PrettyMenu如下: 1 class PrettyMenu 2 { 3 public: 4 ... 5 void changeBackground(istream& imgSrc); 6 ... 7 private: 8 Mutex mutex; 9 Image* bgImage;10 int imageChanges;11 };View Code 成员函数changeBackground的实现如下:1 void PrettyMenu::changeBackground(std::istream& ... 阅读全文
posted @ 2013-06-03 20:43 Sophia-呵呵小猪 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 定义下面的类和结构: 1 class Point 2 { 3 public: 4 Point(int x, int y); 5 ... 6 void setX(int newVal); 7 void setY(int newVal); 8 }; 9 struct RectData10 {11 Point ulhc;12 Point lrhc;13 };14 class Rectangle15 {16 ...17 private:18 std::tr1::shared_ptr<RectData> pData; 19 ... 阅读全文
posted @ 2013-06-03 16:56 Sophia-呵呵小猪 阅读(481) 评论(0) 推荐(0) 编辑
摘要: C++中的转型语法有三种形式:1)C风格的转换:T(expression)(T)expression上面两种形式都是将expression转换为T类型。2)C++新型转换:a. const_cast(expression) 将对象的常量性转除,是唯一有此能力的C++风格转型操作符;b. dynamic_cast(expression) 主要用来执行“安全向下转型”,也就是觉得对象是否归属继承体系中的某个类型。它是唯一无法由旧式语法执行的动作,也是唯一可能耗费重大运行成本的转型动作。c. reinterpret_cast(expression) 意图执行低级转型,实际动作可能取决于编译器,因此. 阅读全文
posted @ 2013-06-03 15:40 Sophia-呵呵小猪 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 如果你定义了一个变量而其类型带有一个构造函数和析构函数,那么当程序的程序流到达这个变量定义式时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本,即使这个变量最终并未被使用,你仍需耗费这些成本,如下面的代码: 1 string encryptPwd(const string& pwd) 2 { 3 string encrypted; 4 if(pwd.length() < MinimumLength) 5 { 6 throw logic_error("Pwd is too short!"); 7 } 8 ... 阅读全文
posted @ 2013-06-03 12:28 Sophia-呵呵小猪 阅读(247) 评论(0) 推荐(0) 编辑