自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 Observer 设计模式(转)

    观察者模式别名:         1:发布-订阅(Publish/Subscribe)模式;         2:模型-视图(Model/View)模式;         3:源-监听器(Source/Listener)模式;         4:从属者(Dependents)模式。        观察者模式定义:         观察者模式定义了一种一对多的依赖关

2009-09-24 23:21:00 622

原创 More Effective C++:通过引用捕获异常(转)

当你写一个catch子句时,必须确定让异常通过何种方式传递到catch子句里。你可以有三个选择:与你给函数传递参数一样,通过指针(by pointer),通过传值(by value)或通过引用(by reference)。  我们首先讨论通过指针方式捕获异常(catch by pointer)。从throw处传递一个异常到catch子句是一个缓慢的过程,在理论上这种方法的实现对于这个过程来说是效率

2009-09-24 23:15:00 774 1

转载 C++ 函数模板和类模板(转)

函数模板示例://一个求绝对值函数的模板template typename T> T abs(T x){return x} ---------------------------------------------------------------------------------------------------------------------类

2009-09-22 22:04:00 846 1

原创 C++ 内联函数的定义

class A{...inline F();...} inline A::F(){printf("inline F");} 或者内联函数直接在类中定义:class A{...F(){    printf("inline F");}...}  

2009-09-22 21:48:00 593

原创 C++ static const 及 声明和定义的区别

class A{ public:A():b(100){}static const  int a;const  int b; //常数据成员只能且必须通过构造函数的初始化列表来获得值proected: private: } const int A::a = 100;//类的静态成员需要在类声明时或声明外初始化(全局初始化),若定义时加了cons

2009-09-22 20:45:00 1987 1

原创 C++的三种继承方式

1. 公有继承当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中保持不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有和保护成员,派生类的其他成员可以直接访问它们;其他外部使用者只能通过派生类的对象访问继承来的公有成员;而无论派生类的成员还是对象都无法访问基类的私有成员。 2. 私有继承当类的继承方式为私有继承

2009-09-22 17:49:00 920 1

转载 为什么CBase有一个 公共 的 虚 析构函数

为什么CBase有一个公共的虚析构函数? 在CleanupStack里面有3个PushL()版本,分别是PushL(TAny *aPtr), PushL(CBase *aPtr) 和 PushL(TCleanupItem anItem), 清除栈一般是这样使用的:CTest* test = CTest::NewL();        // CTest 是一个继承自 CBase的类Clean

2009-09-22 14:09:00 618

原创 C++ 虚函数-多态的执行

有如下程序://-----------------class A { public: A() { printf( "base A/r/n" ); } virtual ~A() { printf( "base ~A/r/n" ); } public: virtual void VirtualFunc() { printf( "base VirtualFunc/r/n" ); }; voi

2009-09-22 13:24:00 795

原创 C++中的虚析构函数

基类的析构函数一般都是虚函数,为什么呢? 因为如果不把基类的析构函数定义为虚函数,当用一个基类的指针指向子类的对象,delete 该指针时,子类的析构函数并不会被调用。(具体原因可参见博客: C++虚函数表 ) 当然,并不是要把所有类的析构函数都写成虚函数。因为当类里面有虚函数的时候,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的存储空间。所以,只有当一个类被

2009-09-22 13:05:00 510

原创 Symbian 二段构造机制

二段构造是Symbian独有的。使用二段构造的机制主要是因为构造函数不应该leave,因为如果构造函数leave,则返回的self 为空(但实际上已经为CMyClass分配了内存,只是在构造函数中为其他成员分配内存时Leave了),所以析构函数就没办法被调到。所以我们通常写一个空的构造函数,然后把需要分配内存或装载资源的操作放到另外一个函数里。在Symbian里,这个函数通常被命名为Constru

2009-09-22 11:13:00 1733

原创 关于delete C/C++ 指针

栈:函数调用的时候,在栈中保存局部变量和函数参数等。当函数返回时,自动清除栈。自由存储区:也称为堆(heap),可以看作大量的内存段。通过 new 操作符分配的内存在堆中。程序结束之前不自动清除自由存储区。需要由程序来负责释放(delete)。 1.对指向栈上内存的指针调用delete会导致程序Crash。 2. new 进行自由存储区中内存分配。如果 new 不能

2009-09-22 10:14:00 1831

原创 Symbian CleanupStack

CMyClass* CMyClass::NewL(TInt aBufSize){CMyClass* self = new (ELeave) CMyClass;self->ConstructL(aBufSize);return self;} 上面这段代码的问题是,如果ConstructL()这个函数Leave了,那么self指针指向的内存空间就没有办法回收了。因为这时返回

2009-09-22 09:55:00 513

原创 在手机上调试,输出Debug信息到计算机

在真实的手机设备上调试比在模拟器上调试更加准确,而且不必使用昂贵的硬件调试设备。前面我们提到过,在手机上调试, 需要安装调试代理,有两不同的机上调试代理,分别为:Application TRK和System TRK·    Application TRK—仅仅支持应用程序的调试。 ·    System TRK—不但支持应用程序的调试,还支持有限的ROM调试。设备制作商可用它来调试设备驱动程序。如

2009-09-21 21:09:00 2668 1

原创 在手机上运行Symbian 应用程序(创建SIS 和安装应用程序)

在真实设备上运行的程序版本不同于我们在模拟器上运行的程序版本,在设备上运行的版本必须是GCCE版本或ARM版本。其中GCCE版本是用SDK 自带的编译器的,使用它不需要付费,而ARM版本是专门针对ARM 平台的,代码经过优化,性能优于GCCE版本的程序,但需要付费。创建应用程序的GCCE 版本以后,需要创建一个Symbian 安装文件(.sis)。从本质上来讲,.sis文件只是一个压缩文件,

2009-09-21 19:41:00 1842

原创 Symbian工程文件(bld.inf 和 *.mmp)

 在group 目录下面,有两个重要的文件,这两个文件都与创建Symbian工程相关:如果,需要在命令行编译工程,必须创建如下两个工程文件:·         工程定义文件 (.mmp file),这个文件对要编译的工程进行描述,并定义要构建的资源文件。该文件是环境无关的,编译工具用它来生成针对各种目标环境下的make files文件。·         组件描述文件(bld.inf), 这个文件

2009-09-21 19:32:00 1013

原创 Symbian MMP file 介绍

TARGET  该关键字指明了目标文件(exe或dll文件)的名称。  TARGETTYPE  该关键字指明了工程所产生的目标文件的类型,在上面的例子中,我们生成了一个可执行文件。在大多数情况下,目标文件的类型为dll,exe或是其他的插件(plugin)。  UID  目标(通常指可以执行的.exe或.dll文件)具有三个UID,这些UID用来标识组件,第一个UID是无须指定的。因为它是

2009-09-21 19:04:00 1122

原创 Symbian 开发环境的搭建步骤

Symbian 开发环境的搭建步骤:         第一步:安装JDK5.0         第二步:安装ActivePerl(需要5.6.1以上版本)         第三步:安装Symbian sdk         第四步:安装Carbide.c++1.2 版本。 Carbide有不同的版本。 其中Express版本是免费安装的,但不支持UI设计功能,也不支持在手机上调试的功能。     

2009-09-21 17:56:00 571

原创 const 的用法

1.  一些成员函数改变对象,一些成员函数不改变对象。例如: int Point::GetY(){ return yVal;} 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象: void Point:: SetPt (int x, int y){ xVal=x; yVal=y;} 为了使成员函数的意义更加清楚,我们可在不改变对

2009-09-21 10:10:00 1024

原创 C++虚函数及虚函数表解析

虚函数的定义:  虚函数必须是类的非静态成员函数(且非构造函数),其访问权限是public(可以定义为private or proteceted, 但是对于多态来说,没有意义。),在基类的类定义中定义虚函数的一般形式:  virtual 函数返回值类型 虚函数名(形参表)  { 函数体 }虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的

2009-09-21 08:03:00 19607 10

转载 C练习题

1.  给定等式  A B C D E     其中每个字母代表一个数字,且不同数字对应不                    D F G     同字母。编程求出这些数字并且打出这个数字的             +      D F G     算术计算竖式。             ───────                X Y Z D E  2. A、B、C、D、E五名学生有可能参

2009-09-16 17:52:00 19524

转载 学编程的人不能不看的好文章(转)

做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分,1.是我面试的具体经过2.是由面试想到的3.现今我应该

2009-09-16 17:49:00 474

转载 内部排序算法比较

排序算法是数据结构学科经典的内容,其中内部排序现有的算法有很多种,究竟各有什么特点呢?本文力图设计实现常用内部排序算法并进行比较。分别为起泡排序,直接插入排序,简单选择排序,快速排序,堆排序,针对关键字的比较次数和移动次数进行测试比较.问题分析和总体设计ADT OrderableList{数据对象:D={ai| ai∈IntegerSet,i=1,2,…,n,n≥0}数据关系:R1={〈a

2009-09-16 17:17:00 724

转载 笔试题收集-3

1、在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么方法来区分那个开关控制那一盏灯?JSJ321.com老师分析:先打开开关A,5分钟后再开开关B。然后进屋,不亮的是C,再摸灯管,温度高的是A,剩下的是B。2、有两根不均匀分布的香,每根香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间?JSJ321.com老师分析:先把一根香从两头点,另一个只点一头,等

2009-09-16 16:33:00 454

转载 笔试题收集-2

1、A是一个用户自定义类。int a = 100;A *ptr = new A [a];delete ptr;这段代码是干什么的,有个错误请指出来,如何提高效率?JSJ321.com老师分析:这段代码创建了一个包含100个类A的实例的数组。这个代码中删除对象数组占据内存空间的方式是“delete[]”而不是“delete”,因此应该改成:delete[] ptr。因为创建的是100个元素的数组,因

2009-09-16 16:09:00 527

转载 如何阅读源代码(转)

自从我在linuxaid.com.cn上发表一些文章开始,就不断的有网友发来电子邮件,或者是就其中某些问题进行探讨,或者是查询其他文章的地址(往往这些网友看的是其他网站转载的我的文章),我很高兴自己写出的文章有这么多人回应,因为这是对我最好的赞赏,也很高兴有这么多人对我的文章感兴趣。但是常常因为工作关系。有很多邮件是询问我的其他文章在哪里能够找到,我不一定能够及时回复,也觉得回复同样的问题比较麻烦

2009-09-16 15:57:00 1663

转载 对初级软件开发者的一些建议(转)

选择一种能够快速见效的编程语言和平台 你需要选择一个既实用又喜欢的平台,让它保持您的兴趣,激励您快速扩展您的知识,最重要的是你要喜欢。 有的文章建议初学者首先学习C语言,因为它是必需的、基础的语言;但是有些人会让您先学习Lisp,因为它有坚实的理论并通过一种简单的方式教给你许多编程概念。 这些都是好的建议,只不过思考问题的角度不同。但是对于“第一种”要学习的语言,我认为选择一种你喜欢而且能够激发潜

2009-09-16 15:51:00 466

转载 笔试题收集-1

1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父类的

2009-09-16 15:28:00 557

原创 链表的创建及逆序

头结点: 头结点是为了操作的统一、方便而设立的,放在第一元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等),有头结点后,对在第一元素结点前插入结点和删除第一结点,其操作与对其它结点的操作统一了。而且无论链表是否为空,头指针均不为空。头指针: 头指针指向链表的第一个节点,若链表有头结点则指向链表的头结点,头指针具有标识作用,故对头指针常冠以链表的名字。首元结

2009-09-15 16:14:00 961 1

转载 Python代码优化

Python代码优化--少打字小技巧 说明:增加代码的描述力,可以成倍减少你的LOC,做到简单,并且真切有力 观点:少打字=多思考+少出错,10代码行比50行更能让人明白,以下技巧有助于提高5倍工作效率 1. 交换变量值时避免使用临时变量:(cookbook1.1) 老代码:我们经常很熟练于下面的代码 temp = x x = y y = temp 代码一: u, v, w = w, v, u 有

2009-09-14 16:14:00 1036

原创 读书笔记_chapter1

1. Setw( size )的使用方法:#include   //setw(int asize)const int nm_size = 128;char user_name[ nm_size ];cin >> setw( nm_size ) >> user_name;如输入的字符个数超过nm_size, 则取前nm_size -1 个字符给数组,数组中最后一个元素自动设为空字

2009-09-05 10:58:00 502

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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