![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
xlf13872135090
这个作者很懒,什么都没留下…
展开
-
线程同步
刚开始接触线程同步问题,在工程中用到原创 2014-05-13 15:52:39 · 495 阅读 · 0 评论 -
深度探索C++对象模型----Data语义学
1 Data Member的绑定对于下图的类:原创 2014-08-06 21:13:43 · 769 阅读 · 0 评论 -
求一个整数的二进制中1的个数
问题:求一个整数的二进制中1的个数思路1:直接位运算,首先判断最后一位是否为1,是则+1,//然后右移一位,但是这个算法只在数为正数时成立,如果为//负数,则右移是算数右移,最高位是补1,会陷入死循环原创 2014-08-06 16:04:15 · 486 阅读 · 0 评论 -
深度探索C++对象模型---Member Function的各种调用方式
Member的各种调用方式1 非静态成员函数原创 2014-08-07 23:03:51 · 831 阅读 · 0 评论 -
cc、gcc、g++、CC的区别概括
gcc是C编译器;g++是C++编译器;linux下cc一般是一个符号连接,指向gcc;gcc和g++都是GUN(组织)的编译器。而CC则一般是makefile里面的一个名字,即宏定义,嘿,因为Linux/Unix都是大小写敏感的系统,这点一定要注意。cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gcc原名为Gun转载 2014-08-08 21:29:22 · 630 阅读 · 0 评论 -
简单工厂模式,工厂模式
今天看了一下工厂相关的模式,一个思想就是将对象的创建都放在工厂里,工厂负责生产对象。工厂屏蔽了具体构造了什么对象。相关的模式有三种:简单工厂模式,工厂模式,抽象工厂模式。第一种:简单工厂模式将创建对象的逻辑放在工厂里,以书上计算器的代码为例,以下为简单工厂模式的实现,代码中有相关的解释//简单工厂模式实现的计算器,//1 有一个运算的基类,各类运算继承该基类,如果增加新的运算,则原创 2014-02-20 15:44:42 · 557 阅读 · 0 评论 -
深度探索C++对象模型--继承与Data Member
在C++继承模型中,一个集成原创 2014-08-08 01:28:18 · 598 阅读 · 0 评论 -
抽象工厂模式
例子是大话设计模式上第15章的内容,用抽象工厂模式,实现了程序中业务逻辑与数据访问的解耦。抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。以下是书上问题的代码实现://抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,//而无需指定他们的类。如SqlserverFactory提供创建Sqlserver相关的用户和部门//优点:易于交换系列产品。原创 2014-02-20 15:56:07 · 541 阅读 · 0 评论 -
C++空类,空虚基类处理及类大小
对于一个空类,编译器会加入1byte的大小,使得这一个类的两个对象咋原创 2014-08-06 20:09:18 · 1131 阅读 · 0 评论 -
单例模式(对象创建型)c++
单例模式是:保证一个类仅有一个实例,并提供该一个访问它的全局访问点。通常可以让一个全局变量是的一个对象被访问,但它不能防止你实例化对个对象。一个好的方法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例被创建,并且提供一个访问该实例的方法(static方法)。这种是懒汉式单例类:即第一次被引用时,才将自己实例化。饿汉模式是:自己被加载时就将自己实例化。另外因为定义的静态变量原创 2014-02-23 20:59:29 · 1690 阅读 · 0 评论 -
外观模式-对象结构型模式
意图:为子系统中的一组借口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。适用性:当要为一个复杂子系统提供一个简单接口时;客户程序与抽象类的视线部分之间存在着很大的依赖性。引入facade将这个子系统与客户端以及其他的子系统分离,可以提高子系统的独立性和可移植性。当需要构建一个层次结构的子系统时,使用facade模式定义子系统中每层的入口原创 2014-03-24 20:35:06 · 655 阅读 · 0 评论 -
线程同步四种方式
四种进程或线程同步互斥的控制方法 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。原创 2014-04-27 21:40:58 · 632 阅读 · 0 评论 -
中缀转后缀,后缀求值,后缀构造表达式树
这三种算法都借助栈,中缀转后缀是符号入栈,其他是数值原创 2014-07-24 20:12:11 · 754 阅读 · 0 评论 -
策略模式--对象行为模式
意图:定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。使算法可独立于使用它的客户而变化。适用性:许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个来配置以各类的方法。需要使用一个算法的不同变体。算法使用客户不应该知道的数据,可使用策略模式以避免暴露复杂的,与算法相关的数据机构。一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现原创 2014-03-24 16:43:35 · 577 阅读 · 0 评论 -
设计模式之装饰模式
意图:动态的给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活。动机:为某个对象而不是整个类添加一些功能。适用性:在不影响其他对象的情况下,以动态,透明的方式给单个对象添加职责。处理那些可以撤销的职责。当不能采用生产子类的方法进行扩充时。一种情况是有大量独立的扩展,为支持每一种组合奖产生大量的子类,使得子类数目呈爆炸性增长。另一种情况是因为原创 2014-03-24 13:16:08 · 628 阅读 · 0 评论 -
约瑟夫环问题
/*约瑟夫环问题:n个数字形成一个圆圈,从数字0开始,每次从圆圈 中删除第m个数字,当一个数字删除后,从被删除数字的下一个继续删除第 m个数字。求圆圈中最后一个数字 */原创 2014-08-05 15:53:53 · 440 阅读 · 0 评论 -
深度探索C++对象模型--构造函数语义学
Default Constructor的操作:在需要的时候原创 2014-08-05 21:42:39 · 676 阅读 · 0 评论 -
深度探索C++对象模型---程序转化语意学
编译器通常的3种转化1显示的初始化操作的转化如果定义 X x0;对于下图三种显示初始化:编译器对程序的转化包括两个阶段原创 2014-08-05 23:34:32 · 683 阅读 · 0 评论 -
原型模式 c++(对象创建型模式)
定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。不用重新初始化对象,而是动态的获得对象运行时的状态。优点:1 可以在运行时刻增加和删除产品。2 改变值以指定新对象3 改变结构以指定新对象4 减少子类的构造5 用类动态配置应用主要缺陷:每个Prototype的子类都必原创 2014-02-23 18:19:07 · 690 阅读 · 0 评论 -
builder模式 c++
builder模式:对象创建型模式意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。适用性:1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。2 当构造过程必须允许被构造的对象有不同的表示时参与者:Builder: 为创建一个Product对象的各个部件指定抽象接口ConcreteBuilder:实现Builder 的原创 2014-02-25 14:27:15 · 1688 阅读 · 0 评论 -
桥接模式
意图:将抽象部分与它的实现部分分离,使他们都可以独立的变化。抽象与实现分离:不是说,让抽象类与其派生类分离,实现指的是抽象类和它的派生类用来实现自己的对象。合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的声原创 2014-02-28 10:25:50 · 571 阅读 · 0 评论 -
中介者模式-对象行为模式
意图:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。动机:面向对象设计鼓励将行为分布到各个对象中。这种分布可能会导致对象间有许多连接。最坏的情况,每个对象都知道其他所有对象。虽然将一个系统分割成许多对象通常可以增强可复用性,但是对象间相互连接的激增又会降低其复用性。通过将集体行为封装在一个单独的中介者对原创 2014-03-27 15:38:25 · 595 阅读 · 0 评论 -
Effective C++第6章继承与面向对象设计(条款32-34)
条款32:确定你的public继承塑膜出is-a关系。public继承原创 2014-08-30 15:43:33 · 564 阅读 · 0 评论 -
条款35 考虑virtual函数以外的其他选择(virtual函数的替代方案)
virtual函数的替代方案有以下几种:1 使用non-virtual in原创 2014-08-30 17:26:46 · 800 阅读 · 0 评论 -
取样问题
编程珠玑第12章的一个问题:程序的输入包含两个整数m和n,()原创 2014-08-16 09:37:49 · 711 阅读 · 0 评论 -
Effective c++ 第7章 模板与泛型编程
模板与泛型程序可以创造出“在C++编译器内执行并于”原创 2014-08-31 20:41:19 · 721 阅读 · 0 评论 -
Effective C++第6章 继承与面向对象设计(条款36-40)
条款36:绝不重新定义继承而来的non-virtual函数。原创 2014-08-31 13:30:33 · 549 阅读 · 0 评论 -
Effective C++ 第一章(让自己习惯C++)
内置(C-like)类型而言pass-by-value通常与pass-by-reference更高小原创 2014-08-23 15:00:44 · 458 阅读 · 0 评论 -
C++实现一个不能被继承的类
java中有一种类不能被继承,那就是final类.而C++中没有final类。 C++要实现一个不能被继承的类有很多方法. 主要的思路就是使子类不能构造父类的部分,这样子类就没有办法实例化整个子类.这样就限制了子类的继承. 所以我们可以将父类的构造函数声明成为私有的,但是这样父类不就不能实例化,继续思考、、、 我们可以利用友员不能被继承的特性! 首先假设CParent转载 2015-02-06 13:15:21 · 828 阅读 · 0 评论 -
命令模式-对象行为模式
意图:将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作.动机:有时必须向某对象提交请求,但并不知道关于被请求的操作或请求的接受者的任何信息。提交一个请求的对象仅需直到如何提交它,而不需要知道该请求将会如何被执行。适用性:1 抽象出待执行的动作以参数化某对象。2 在不同的时刻指定,排列和执行请求。3 支持取消操作。Com原创 2014-03-26 10:52:18 · 715 阅读 · 0 评论 -
职责链模式-对象行为模式
意图:使多个对象有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。这将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。模式是给多个对象处理一个请求的机会,从而解耦发送者和接受者。请求沿对象链传递直至其中一个对象处理它,如下图所示:从第一个对象开始,链中收到请求的对象要么亲自处理,要么转发给链中的下一个候选者。提交请求的对象并不明确的知道哪一个对象将会处理原创 2014-03-25 21:54:35 · 635 阅读 · 0 评论 -
模板模式-类行为型模式
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。动机:一个模板方法用一些抽象的操作定义一个算法,而子类重定义这些操作以提供具体的行为。通过使用抽象操作定义一个算法中的一些步骤,模板方法确定了它们的先后顺序,但它允许子类改变这些具体步骤以满足各自的需求。适用性:1一次性实现原创 2014-03-28 11:03:52 · 656 阅读 · 0 评论 -
享元模式-对象结构型模式
//享元模式:运用共享技术有效地支持大量细粒度的对象#include #include #include using namespace std;//User,外部状态类 class User{public: User(string name) : _name(name) { } string Name() { return _name; } priva原创 2014-03-25 09:33:26 · 657 阅读 · 0 评论 -
C++操作符重载
不能重载的操作符有::: .* .原创 2014-08-22 14:55:57 · 472 阅读 · 0 评论 -
Effective c++ 第三章 (资源管理)
条款13:以对象管理资源原创 2014-08-24 09:51:08 · 520 阅读 · 0 评论 -
代理模式-对象结构型模式
意图:为其他对象提供一种代理以控制对这个对象的访问。动机:对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对他进行创建和初始化。适用性:1 远程代理:为一个对象在不同的地址空间提供局部代表。2 虚代理:根据需要创建开销很大的对象。3 保护代理:控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。4 智能指引:取代了简单的指针,在访问对象时执原创 2014-03-25 15:22:58 · 572 阅读 · 0 评论 -
Effective C++ 条款49:了解new-handler的行为
当operator new无法满足某一内存分配需求时,他会爬原创 2014-08-24 12:22:46 · 587 阅读 · 0 评论 -
Effective C++ 第八章(定制new和delete)
条款50:了解new和delete的合理替换时机原创 2014-08-24 17:06:12 · 527 阅读 · 0 评论 -
大数据面试题记录
1 海量日志数据,提取出某日访问百度次数最多的那个IP原创 2014-08-25 11:18:55 · 9251 阅读 · 0 评论 -
C++ protected关键字
转载,释然读C++ Primer 心中疑惑: http://www.cnblogs.com/harlentan/archive/2011/03/05/2006444.html关于C++中protected的访问权限的讨论已经是一个很陈旧的话题了,陈旧到大家都不愿意去讨论,觉得他见到到吃饭睡觉那么自然。我再次读《C++ Primer》的时候,其中关于protected 成员的描述是这样的转载 2015-02-06 13:53:10 · 3367 阅读 · 1 评论