- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 条款31:将文件间的编译依存关系将至最低
考虑如下代码:class Person {public: Person(const std::string& name, const Date& birthday, const Address& addr); std::string name() const; std::string brithDate() const; std::string address() const; //...private: std::string
2020-10-27 21:44:26 142
原创 条款30:透彻了解inlining的里里外外
inlie函数背后整体观念是,将"对此函数的每一个调用"都以函数本体替换之Inlining在大多数C++程序中是编译行为大部分编译器拒绝将太过复杂(例如循环或递归)的函数inlining,而所有对virtual函数的调用也会使inlining落空,因为virtual意味着"等待,知道运行期才确定调用那个函数",而inling意味着"执行前,先将调用动作替换为被调用函数的本体";编译器通常不对"通过函数指针而进行的调用"实施inlining,这意味着对inline函数的调用有可能被inlined,也有.
2020-10-20 22:23:18 257
原创 条款29:为“异常安全“而努力是值得的
考虑如下代码:class PrettyMenu { public: // ... void changeBackground(std::istream& imgSrc); // 改变背景图像 // ... private: Mutex mutex; // 互斥器 Image* bgImage; // 目前背景图像 int imageChanges; // 背景图像被改变次数};void PrettyMenu::changeBackground(std
2020-10-16 22:27:34 89
原创 条款28:避免返回handles(引用,指针,迭代器)指向对象内部成分
考虑如下代码:class Point {public: Point () {} Point(int x, int y) : mx(x), my(y) {} void setX(int newVal) { mx = newVal; } void setY(int newVal) { my = newVal; } int xpos() { return mx; } int ypos
2020-10-09 22:01:54 116
原创 条款25:考虑写一个不抛出异常的swap函数
考虑如下代码class WidgetImp1 { //针对Widget数据设计的class,细节不重要public: //...private: int a, b, c; std::vector<double> v; };class Widget {public: Widget(const Widet& rhs); Widget& operator=(const Widget& rhs) { //... *pImpl = *(rhs.pI
2020-10-04 14:39:01 128
原创 条款24:若所有参数皆需类型转换,请为此采用non-member函数
考虑如下支持算数运算的类class Rational { public: Rational(int numerator = 0, int denominator = 1); int numerator() const; int denominator() const; //分子,分母函数 const Rational operator* (const Rational& lhs) const; //乘法函数 private: // ...};将两个有理数以最轻松自在的
2020-10-03 15:10:20 176
原创 条款23:宁以non-member,non-friend替换member函数
考虑如下代码:有清除缓冲区,历史记录,cookies等操作class WebBrowser { public: //... void clearCache(); void clearHistory(); void removeCookies();};有用户想一次性执行这些操作,有如下两种方案,提供一个clearEverything成员函数调用其他三个成员函数class WebBrowser { public: //... void clearEverything(); // 调
2020-10-03 10:09:34 135
原创 条款22:将成员变量声明为private
切记将成员变量声明为private,这可赋予客户访问数据的一致性,可细微划分为访问控制,允许约束条件获得保证,并提供class作者以重复以充分的实现弹性protected并不比public更具封装性
2020-10-02 22:15:03 118
原创 条款21:必须返回对象时,别妄想返回其reference
知道了pass -by-value(传值)的效率牵连层面,从此一直适用pass-by-reference,就会犯下一个致命错误:开始传递一些reference指向其实并不存在的对象;考虑如下代码:class Rational { public: Rational(int numberator = 0, int denominator = 1); //... private: int n, d; friend const Rational operator* (const Rationa
2020-10-02 11:17:27 133
《Flash.ActionScript3.0从入门到精通》笔记 (1)
2018-06-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人