- 博客(11)
- 资源 (6)
- 收藏
- 关注
翻译 条款28:避免返回handles指向对象内部成分
假如定义一个矩形。为了让Rectangle对象尽可能小,我们不会把定义的这些点(左上角和右下角)置于对象内,而是用一个辅助struct再去指向它。如下代码:class point //点类{ public: point(int x,int y); ... void setX(int val); void setY(int val); ...}; str
2015-01-18 09:48:36 359
翻译 条款27:尽量少做转型动作
C++的设计目标之一是保证“类型错误”绝不会发生。但转型(cast)破坏了类型系统(type system).旧式转型,C风格的转型动作,如下: (T)tmp //将tmp转型为T T(tmp) //同上,函数风格的转型动作C++提供四种新式转型(new-style或C++-style casts) 1、const_cast (tmp) 通常用来将对象的
2015-01-16 20:03:39 323
转载 iOS消息推送机制的实现
iOS消息推送机制的实现iOS消息推送的工作机制可以简单的用下图来概括: Provider是指某个iPhone软件的Push服务器,APNS是Apple Push Notification Service的缩写,是苹果的服务器。 上图可以分为三个阶段:第一阶段:应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的
2015-01-16 15:49:53 254
翻译 条款26 尽可能延后变量定义出现的时间
尽可能延后变量定义的出现,这样可以增加程序的清晰度并改善程序效率。 当定义一个变量(尽管从未使用),当程序控制流到达这个变量定义时,仍然会耗费构造和析构成本。考虑下述代码://过早定义变量s1 std::string fun1(const std::string& s1) { using namespace std;
2015-01-15 10:50:42 466
转载 动态规划1
1,什么是动态规划(DP)? 只有对概念理解深刻,才能准确知道对于什么样的问题去考虑有没有动态规划的方法,以及如何去使用动态规划。 1)动态规划是运筹学中用于求解决策过程中的最优化数学方法。多阶段决策过程中最优的通用方法。 它是数学中用于求解某类最优化问题的重要工具。 2)如果问题是由“交叠的子问题”构成,我们就可以用动态规划技术来解决,一般来说,这样的子问题出现在对给定
2015-01-14 16:23:33 525
翻译 条款25:考虑写出一个不抛出异常的swap函数
swap原本只是STL的一部分,后面成为异常安全编程的脊柱,及处理自我赋值安全性的一个常见机制。例子:标准程序库提供的swap算法namespace s td{ templatevoid swap(T& a,T& b) //std::swap的典型实现{T tmp(a);a=b;b=tmp;}}要求:类型T支持copying(通过copying构造函数和copya
2015-01-14 14:50:21 442
翻译 条款24:若所有参数都需要类型转换,请为此采用non-member函数
如果你需要为某个函数的所有参数(包括this指针所的那个隐喻参数)进行类型转换,那么这个函数必须是non-member例子:class Rational {public: Rational(intnumerator=0, int denominator=1); //不是explicit,为了支持混合运算
2015-01-12 19:45:16 764
翻译 条款23、宁以non-menber、non-friend替换成员函数
考虑以下browser类:class WebBroswer{ public: ... voidclearCache(); voidclearHistory(); voidremoveCookies(); ...};很多人会想到提供一函数执行一系列操作:class WebBrows
2015-01-11 15:20:21 744
翻译 条款22、将成员变量声明为private
假设有一个public成员变量,当取消它时、所有使用它的客户代码都会被破坏。因此public成员变量完全没有封装性。 假设有一个protected成员变量,当取消它时、所有使用它的derived classes都会被破坏。 所有反对public成员变量的论点同样适用于protected。其封装性并不比public好 语法一致性:使用不同的访问权限可以使函数对成员变量的处理有更精确
2015-01-11 10:55:55 523
翻译 条款21、必须返回对象时,别妄想返回其reference
条款20提到了传值带来的效率问题,从而会使人犯下一些错误:开始传递一些引用指向其实并不存在的对象。考虑一有理数类:class Rational{public: Rational(intnumerator=0,int denominator=1); //条款24解释此函数为什么不声明为explicitprivate: intn,d; //分子
2015-01-09 15:38:29 386
翻译 第20条:尽量使用“引用常量”传参代替传值
默认情况C++以传值方式传递对象至函数(继承自C语言的特征)。除非另外指定,否则函数参数都是以实际实参的复件(副本)为初值,并且,函数调用者得到的也是函数返回值的一个副本。这些副本是由对象的拷贝构造函数创建。这使得“传值”成为昂贵的操作。考虑以下class继承体系:class Person {public: Person(); // 为简化省略参数表 virtual ~Pers
2015-01-08 20:34:08 785
Visual AssistX for VS2017
2019-01-22
深入应用C++11 代码优化与工程级应用完整版 pdf
2018-02-27
FileTool.ext
2014-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人