• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






richardcpp

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

2014年4月3日

工厂模式
摘要: 本文是转的一、引子话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他开车。不过,暴发户坐车时总是怪怪的:上Benz车后跟司机说“开奔驰车!”,坐上Bmw后他说“开宝马车!”,坐上Audi说“开奥迪车!”。你一定说:这人有病!直接说开车不就行了?!而当把这个暴发户的行为放到我们程序设计中来时,会发现这是一个普遍存在的现象。幸运的是,这种有病的现象在OO(面向对象)语言中可以避免了。下面就以Java语言为基础来引入我们本文的主题:工厂模式。二、分类工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。工厂模 阅读全文
posted @ 2014-04-03 16:54 richardcpp 阅读(225) 评论(0) 推荐(0)
 

2013年5月2日

bit-manipulation(1)
摘要: You are given two 32-bit numbers, N and M, and two bit positions, i and j. Write a method to set all bits between i and j in N equal to M (e.g., M becomes a substring of N located at i and starting at j).EXAMPLE:Input: N = 10000000000, M = 10101, i = 2, j = 6Output: N = 10001010100solution中是有错误的假设n的 阅读全文
posted @ 2013-05-02 20:50 richardcpp 阅读(263) 评论(0) 推荐(0)
 
Linked Lists
摘要: 创建一个链表:NOTE: When you’re discussing a linked list in an interview, make sure to understand whether it is a single linked list or a doubly linked list.1 class Node {2 Node next = null;3 int data;4 public Node(int d) { data = d; }5 void appendToTail(int d) {6 Node end = new Node(d);7 Node n = this;8 w 阅读全文
posted @ 2013-05-02 15:25 richardcpp 阅读(357) 评论(0) 推荐(0)
 
判断链表是否存在环,找出环的入口
摘要: 一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:bool IsExitsLoop(slist *head) { slist *slow = head, *fast = head; while ( fast && fast->next ) { slow = slow->next; fast = fast->next->next; if 阅读全文
posted @ 2013-05-02 15:08 richardcpp 阅读(329) 评论(0) 推荐(0)
 

2013年3月18日

虚函数和纯虚函数
摘要: 虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public: virtual void Eat(){……}; void Move();private:};class CChild : public CMan{public: virtual void Eat(){……};private:};CMan m_man;CChild m_child;//这才是使用的精髓,如果不定 阅读全文
posted @ 2013-03-18 16:14 richardcpp 阅读(344) 评论(0) 推荐(0)
 

2013年3月17日

类的静态成员
摘要: 静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。 静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存... 阅读全文
posted @ 2013-03-17 22:14 richardcpp 阅读(179) 评论(0) 推荐(0)
 
this指针
摘要: #include <iostream> using namespace std; class A { public: int get() const{return i;} void set(int x){this->i=x;cout<<"this指针保存的内存地址为:"<<this<<endl;} private: int i; }; int main() { A a; a.set(9); cout<<"对象a所在的内存地址为:"<<&a<<endl; co 阅读全文
posted @ 2013-03-17 21:18 richardcpp 阅读(190) 评论(0) 推荐(0)
 
多态和重载
摘要: 首先,什么是多态(Polymorphisn)?按字面的意思来讲,就是“多种形状”。笔者也没有找到对多态的非常学术性的描述,暂且引用一下Charlie Calvert对多态的描述——多态性是允许用户将父对象设置成为与一个或更多的它的子对象相等的技术,赋值之后,基类对象就可以根据当前赋值给它的派生类对象的特性以不同的方式运作。 更简单地说就是:多态性允许用户将派生类类型的指针赋值给基类类型的指针。多态性在Object Pascal中是通过虚方法(Virtual Method)实现的。 什么是“虚方法”?虚方法就是允许被其派生类重新定义的方法。派生类重新定义基类虚方法的做法,称为“覆盖”(overr 阅读全文
posted @ 2013-03-17 20:26 richardcpp 阅读(1073) 评论(0) 推荐(0)
 

2012年11月27日

线程的分离状态
摘要: 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况下,原有的线程等待创建的线程结束。只有当pthread_join()函数返回时,创建的线程才算终止,才能释放自己占用的系统资源。而分离线程不是这样子的,它没有被其他的线程所等待,自己运行结束了,线程也就终止了,马上释放系统 阅读全文
posted @ 2012-11-27 17:06 richardcpp 阅读(438) 评论(0) 推荐(0)
 

2012年11月13日

select()函数详解
摘要: 转自:http://blog.csdn.net/zhw888888/archive/2009/03/29/4034515.aspx Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发 阅读全文
posted @ 2012-11-13 20:47 richardcpp 阅读(690) 评论(0) 推荐(0)
 
下一页