
C/C++
文章平均质量分 50
ocean181
这个作者很懒,什么都没留下…
展开
-
#pragma once与 #ifndef的区别
为了避免同一个文件被include多次1 #ifndef方式2 #pragma once方式在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif 方式二:原创 2009-07-16 10:22:00 · 483 阅读 · 0 评论 -
什么时候应该用到友元类
什么时候希望一个类成为另一个类的友元类呢?我们来看一个例子:假定需要编写一个模拟电视机和遥控器的简单程序。决定定义一个Tv类和一个Remote类,来分别表示电视机和遥控器。很明显,这两个类之间应当存在某种关系,但是什么样的关系呢?遥控器并非电视机,反之亦然,所以公有继承的is原创 2011-09-21 21:16:08 · 1542 阅读 · 0 评论 -
C语言宏定义的用法
宏定义了一个代表特定内容的标识符。 预处理过程会把源代码中出现的宏标识符替换成宏定义时的值。 宏最常见的用法是定义代表某个值的全局符号。 宏的第二种用法是定义带参数的宏,这样的宏可以象函数一样被调用,但它是在调用语句处展开宏,并用调用时的实际参数来代替定义中的形式参数转载 2011-09-25 09:33:23 · 4796 阅读 · 0 评论 -
23种设计模式
工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些。1、FACTORY—追MM少不了请吃原创 2011-10-14 19:21:02 · 477 阅读 · 0 评论 -
UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别 三者描述对象的附属[也就是依赖]关系: 关联 inheritance: "a kind of": 猫是一种动物,说明猫从动物继承; association: 两者之间存在某种关联即可,很弱的关系,如student and course, 每个学生可以选不同的课,每原创 2011-01-05 10:45:00 · 24576 阅读 · 1 评论 -
什么是回调函数?
一、什么是回调函数? 简而言之,回调函数就是被调用者回头调用调用者的函数。 使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个被调用函数。而该被调用函数在需要的时候,利用传递的地址调用回调函数。回调函数,就是由你自己写的,你需要调用另外一个函数,而这个函数的其中一个参数,就是你的这个回调函数名。这样原创 2011-10-24 14:16:01 · 632 阅读 · 0 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(原创 2011-10-24 13:28:58 · 444 阅读 · 0 评论 -
经常用到的Eclipse快捷键
存盘 Ctrl+s(肯定知道)注释代码 Ctrl+/ Or Ctrl+Shift+/取消注释 Ctrl+/(Eclipse3已经都合并到Ctrl+/了)代码辅助 Alt+/快速修复 Ctrl+1代码格式化 Ctrl+Shift+f整理导入 Ctrl+Shift+o切换窗口 Ctrl+f6ctrl+shift+M 导入未引用的包ctrl+w 关闭单个窗口原创 2010-08-31 11:05:00 · 777 阅读 · 0 评论 -
C++ Vector 使用心得
标准库Vector类型使用需要的头文件:#include Vector:Vector 是一个类模板。不是一种数据类型。 Vector是一种数据类型。一、 定义和初始化Vector v1; //默认构造函数v1为空Vector v2(v1);//v2是v1的一个副本Vector v3(n,i);//v3包含n个值为i的元素Vector v4(n); //v4含有n个值转载 2011-11-03 09:47:16 · 569 阅读 · 0 评论 -
Ubuntu 10.10下Android源码编译环境的搭建
一、基于上一篇文章《Ubuntu10.10下Android开发环境的搭建》安装好JDK1.5,并配置好环境变量java -version 显示信息: java version "1.5.0_22" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03) Java HotSpot(TM)原创 2011-11-26 19:01:43 · 1979 阅读 · 0 评论 -
关于C++中的explicit关键字
explicit,和构造函数一起使用. explicit constructor指明构造函数只能显示使用,目的是为了防止不必要的隐式转化. 举个例子: 有这样一段代码: class A { public:原创 2011-09-21 20:19:32 · 506 阅读 · 0 评论 -
布局new操作符
通常,new负责在堆(heap)中找到一个足以满足需要的内存块。new操作符还有另一种变体,被称为布局new操作符,能够让你指定要使用的位置。程序员可以利用这种要使用布局new特性,首先要包含头文件new,他提供了这种new操作的原型。const int BU原创 2011-09-20 09:41:09 · 1135 阅读 · 0 评论 -
复制构造函数(拷贝构造函数)
<br /> 也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。<br /> 为了说明复制构造函数作用,我先说说我们在编程时会遇到的一些问题。对于C++中的函数,我们应该很熟悉了,因为平常经常使用;对于类的对象,我们也很熟悉,因为我们也经常写各种各样的类,使用各种各样的对象;对于指原创 2010-06-28 16:50:00 · 506 阅读 · 0 评论 -
泛型编程--STL是什么
<br />泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。STL以迭代器(Iterators)和容器(Containers)为基础,是一种泛型算法(Generic原创 2010-07-02 13:22:00 · 590 阅读 · 0 评论 -
verify和assert的区别
<br />首先它们都是用作错误检测的宏,但有所区别:<br />1、在DEBUG模式下,两个宏的功能是一样的<br />2、在RELEASE模式下,ASSERT不会对参数里的表达式进行计算,VERIFY会计算里面的表达式(如果是函数,将会调用该函数)。 <br />部分定义如下:<br />#ifdef _DEBUG<br />#define VERIFY(f) ASSERT(f)<br />#else<br />#define ASSERT(f) ((void)0)<原创 2010-07-14 15:00:00 · 985 阅读 · 0 评论 -
串行化的机制和原理
<br />Seralization 又叫串行化,简单的讲,就是一种保存当前运行程序的状态,下次运行程序时可以将被保存的状态提取出来,这样就可以从上次保存的状态开始往后运行.在游戏设计中,这也就是所谓的存档/读档功能.<br /> <br />那么Seralization如何才能实现呢. 在结构化的程序设计中,函数(方法)和数据是相互独立的.<br />我们需要将当前内存块中的每个变量数据都保存到文件(后者是一个内存块,这点在下文提到)中,然后下次运行时在将这些数据都提取出来,付给每个变量. 比如说我的程序原创 2010-07-13 15:45:00 · 1069 阅读 · 0 评论 -
设计模式--观察者模式(C++)
一、什么是观察者模式 Observer模式也叫观察者模式,是由GoF提出的23种软件设计模式的一种。Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。 观察者模式(Observer)完美的将观察者和被观察的对象分离开。举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上。面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面。一个对象只做一件事原创 2010-09-11 15:09:00 · 2719 阅读 · 2 评论 -
组合与继承
组合与继承<br /> 组合,有的书里面也叫聚合。由现有的类生成新的类,有两种方法就是组合与继承。我们把UML中的关联关系和聚集关系统称为组合关系。组合与继承都是提高代码可重用性的手段。在设计对象模型时,可以按照语义来识别类之间的组合关系和继承关系。在有些情况下,采用组合关系或者继承关系能完成同样的任务,组合和继承存在着对应关系:组合中的整体类和继承中的子类对应,组合中的局部类和继承中的父类对应。<br /> 组合是将现有的类型作为新类底层实现的一部分来加以复用通常就是一个类里用另一原创 2010-09-11 22:30:00 · 697 阅读 · 0 评论 -
标准C++的类型转换符
<br />一 、C 风格(C-style)强制转型如下<br />(T) exdivssion // cast exdivssion to be of type T <br />函数风格(Function-style)强制转型使用这样的语法: <br />T(exdivssion) // cast exdivssion to be of type T <br />这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这两种形式称为旧风格(old-style)的强制转型。<br /> <br原创 2010-11-09 15:17:00 · 725 阅读 · 0 评论 -
C++中的is-a和has-a关系
is_a是继承关系,has_a是组合关系<br />简单的理解就可以这样:<br />has-a 就是这样:<br />class one{..};<br />class two<br />{<br />private:<br /> class one;<br />};<br /><br />is-a 就是<br />class base{..};<br />class drivate :public base{..};原创 2011-02-20 15:42:00 · 4300 阅读 · 0 评论 -
最常用的UML图包括:用例图、类图、序列图、状态图、活动图、组件图和部署图
用例图用例图描述了系统提供的一个功能单元。用例图的主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系。用例图一般表示出用例的组织关系--要么是整个系统的全部用例,原创 2011-08-31 17:20:53 · 1591 阅读 · 0 评论 -
Java与C++区别
JAVA和C++的区别介绍框架纲领如下:(一) 序言:(二)我学习二者的个人感受:(三) 个人建议:(四)用JAVA中继承的特性来描述C++和JAVA的关系图示:(五)JAVA和C++的区别(前言导读):(六)JAVA和C++的基本区别(开始华山论剑)1)JAVA摒弃的C++内容。2)JAVA的新特性。3)JAVA和C++都有却不同的特性.(七)JAVA和C转载 2013-06-21 09:26:16 · 1143 阅读 · 0 评论