自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dablelv的博客专栏

The blog world of Dablelv

原创 设计模式(4)—— 简单工厂模式(Simple Factory,创建型)

1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。简单工厂模式(Simple Factory Pattern)属于创建型模式。简单工厂模式,由一个工厂对象决定创建出哪一种产品类的实例,它经常被用于封装创建对象的代码。简单工厂模式类图结构: SimpleFactory:简单工厂类,简...

2017-02-28 22:56:07 912 0

原创 设计模式(3)——装饰者模式(Decorator,结构型)

1.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。装饰者模式( Pattern)属于结构型模式,动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。它是通过创建一个包装对象,通过包装对象来包裹真实的对象,以达到装饰目的。装饰者模式在现实生活中有很多例子,比如...

2017-02-27 22:25:59 842 0

原创 C++11 range-based for loop

很多编程语言都有range for语法功能,自C++11起,终于将这个重要功能加入C++标准中。range for语句,可以方便的遍历给定序列中的每个元素并对其执行某种操作。 1.基本语法 for(declaration:expression) statement 其中,decl...

2017-02-26 15:58:25 1724 0

原创 设计模式 (2)——观察者模式(Observer,行为型)

1.概述 使用设计模式可以提高代码的可复用性、可扩充性和可维护性。观察者模式(Observer Pattern)属于行为型模式,在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。 例如,在实际生活中,报纸出版社和订阅者之间存在着一对多的关系。当你向...

2017-02-25 21:19:28 724 0

原创 C++ 获取类成员虚函数地址

1.GCC平台GCC平台获取C++成员虚函数地址可使用如下方法[1]^{[1]}:class Base{ int i; public: virtual void f1(){ cout<<"Base's ...

2017-02-21 16:54:13 1770 5

原创 设计模式(1)—— 策略模式(Strategy,行为型)

1.概述 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。 2.

2017-02-16 23:21:01 1048 5

原创 面向对象设计原则(1)——学习使用设计模式

设计模式(Design Pattern)是一套被反复使用、多数人知晓、分类编目、代码设计经验的总结。使用设计模式是为了提高代码的可复用性、可扩充性可维护性,让代码易于被他人理解且保证软件的可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编写真正工程化;设计模式是软件工程的基石...

2017-02-16 17:06:26 451 0

原创 C++ 析构函数不要抛出异常

1.别让异常逃离析构函数的原因《Effective C++》第三版中条款08建议不要在析构函数中抛出异常,原因是C++异常机制不能同时处理两个或两个以上的异常。多个异常同时存在的情况下,程序若不结束,会导致不明确行为。如下代码:class Widget{ public: ~Widget()...

2017-02-15 21:16:22 1901 0

原创 C++11 就地初始化与列表初始化

C++11之前,C++主要有以下几种初始化方式://小括号初始化 string str("hello");//等号初始化 string str="hello"...

2017-02-15 14:12:56 12746 0

原创 面向对象设计的五项基本原则

面向对象设计(OOD)是面向对象编程(OOP)必不可少的一个环节,只有好的设计,才能保障程序的质量。面向对象设计的主要任务就是类的设计,不少面向对象(OO)的先驱和前辈已经提出了很多关于类的设计原则,用于指导OOP,其中就包括类设计的五项基本原则。1.单一职责原则(Single Resposibi...

2017-02-13 22:28:58 1792 1

原创 C++ 接口继承与实现继承的区别和选择

1.接口继承与实现继承的区别《Effective C++》条款三十四:区分接口继承和实现继承中介绍的比较啰嗦,概括地说需要理解三点: (1)纯虚函数只提供接口继承,但可以被实现; (2)虚函数既提供接口继承,也提供了一份默认实现,即也提供实现继承; (3)普通函数既提供接口继承,也提供...

2017-02-13 16:34:44 2980 0

原创 C++ 继承与组合的区别

C++程序开发中,设计孤立的类比较容易,设计相互关联的类却比较难,这其中会涉及到两个概念,一个是继承(Inheritance),一个是组合(Composition)。因为二者有一定的相似性,往往令程序员混淆不清。类的组合和继承一样,是软件重用的重要方式。组合和继承都是有效地利用已有类的资源。但二者...

2017-02-13 13:45:04 2847 3

原创 C++ 控制对象的创建方式和数量

通常情况下,对象创建在堆上还是在栈上,创建多少个,这都是没有限制的。但是有时会遇到一些特殊需求。1.禁止创建栈对象禁止创建栈对象,意味着只能在堆上创建对象。创建栈对象时会移动栈顶指针以“挪出”适当大小的空间,然后在这个空间上直接调用类的构造函数以形成一个栈对象。而当栈对象生命周期结束,如栈对象所在...

2017-02-12 18:38:54 936 0

原创 C++操作符重载形式——成员函数or友元函数

运算符重载是C++多态的重要实现手段之一。通过运算符重载对运算符功能进行特殊定制,使其支持特定类型对象的运算,执行特定的功能,增强C++的扩展功能。运算符重载的我们需要坚持四项基本原则: (1)不可臆造运算符; (2)运算符原有操作数的个数、优先级和结合性不能改变; (3)操作数中至少...

2017-02-10 16:39:50 2565 8

提示
确定要删除当前文章?
取消 删除