随笔分类 -  C++

1 2 下一页
C++技术心得
一道华为笔试题
摘要:#include class human{public: static int human_num; human(){ human_num++; std::cout<<"default human num is: "<<human_num<<std::endl; }; human(c... 阅读全文
posted @ 2015-08-24 22:08 bitbit 阅读(804) 评论(0) 推荐(0) 编辑
[转]Visual Studio 2010 中安装Qt 5.1
摘要:截至目前(2013年7月12日)为止,Qt 的最高版本为Qt5.1,在该版本中已经将Qt Creator与Qt Lib集成在一个文件夹中,因此安装的时候较为方便,只需安装一个即可。因为Qt具有超强的可移植性,在同一系统平台下编写的Qt程序几乎不用更改(主要是在调试的时候更改编译链接的库即可)即可轻松... 阅读全文
posted @ 2015-04-29 15:33 bitbit 阅读(3779) 评论(0) 推荐(0) 编辑
转:vector的reserve和resize
摘要:vector的reserve和resize vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加... 阅读全文
posted @ 2015-02-18 21:48 bitbit 阅读(293) 评论(0) 推荐(0) 编辑
Visitor模式和Observer观察者模式
摘要:所谓访问者模式,就是不同服务提供者对同一种服务提供的服务内容不同。Typedef std::vector VisitbleArray;Typedef std::vector VisitorArray;Interface IVisitable{ void AcceptSum(IVisitor visi... 阅读全文
posted @ 2015-01-18 13:30 bitbit 阅读(1483) 评论(0) 推荐(0) 编辑
用附加到进程的方法调试服务代码
摘要:首先安装要调试的服务进程版本(文件就是debug下产生的,并且位于调试目录),安装后启动它。然后打开VC,在菜单调试->附加到进程窗口中查找启动后的服务进程名字,点击“附加”。然后就可以进行断点调试。 阅读全文
posted @ 2015-01-10 12:59 bitbit 阅读(710) 评论(0) 推荐(0) 编辑
ACE的源码划分
摘要:前几篇文章也提到过,ACE的所有源文件和头文件都杂乱堆在了ACE_wrappers/ace目录下。这样的代码组织方式给学习ACE带来了很大的困难,很多朋友在看到ace目录下庞大的代码的时候,几乎就失去了学习ACE的信心^_^。因此,我们有必要对ACE的代码进行重新组织,以降低学习曲线。下面,我将给出... 阅读全文
posted @ 2015-01-08 18:08 bitbit 阅读(2901) 评论(0) 推荐(0) 编辑
通过#define连接字符串的特殊方法[转]
摘要://在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。#define Conn(x,y) x##y //连接x,y#define ToChar(x) #@x //加单引号#define ToString(x) #x //... 阅读全文
posted @ 2015-01-08 13:02 bitbit 阅读(16688) 评论(0) 推荐(1) 编辑
转:extern "C"的用法解析
摘要:1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C+... 阅读全文
posted @ 2014-12-24 09:25 bitbit 阅读(635) 评论(0) 推荐(0) 编辑
需要学习的知识
摘要:1.熟悉RUP,XP开发过程,精通软件设计原则和设计模式,习惯重构,熟悉UML以及相关工具,能熟练使用Rose,Visio等设计工具;2.C++基础,算法基础,熟悉MFC和STL,模板编程;3.精通VC++,能熟练使用2010开发环境;4.精通ATL和WTL,熟悉COM等,可以基于DirectX开发... 阅读全文
posted @ 2014-10-31 20:02 bitbit 阅读(241) 评论(0) 推荐(0) 编辑
c/c++面试题
摘要:1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理... 阅读全文
posted @ 2014-06-22 07:56 bitbit 阅读(5231) 评论(1) 推荐(0) 编辑
微软测试题
摘要:微软面试题1作者:佚名 来源:网络1.求下面函数的返回值int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2... 阅读全文
posted @ 2014-06-21 23:06 bitbit 阅读(641) 评论(0) 推荐(0) 编辑
今天才明白VC++.net的含义: VS系列的c++编译器可以支持托管C++(类似于C#,具体请看MS在线文档),当然包括winform界面开发。
摘要:因此我决定用winform做界面,用C++写逻辑。当然尽量不用托管代码写逻辑。 阅读全文
posted @ 2014-05-16 15:33 bitbit 阅读(624) 评论(0) 推荐(0) 编辑
常对象与常成员函数的关系
摘要:(1) 常对象用const修饰的对象叫对象常量,其格式如下:〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。例:分析下列错误的地方,说明理由;#includeclass Point{int x, y;public:Point(int a, int b) { x=a; y=b;}Void MovePoint( int a, int b){ x+=a; y+=b;}Void print(){ coutint length(const Point &p1, const Point &p2){int l; 阅读全文
posted @ 2014-04-07 10:36 bitbit 阅读(1072) 评论(0) 推荐(0) 编辑
C++ 智能指针详解
摘要:一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::weak_ptr、boost:: intrusive_ptr。你可能会想,如此多的智能指针就为了解决n 阅读全文
posted @ 2014-04-07 10:00 bitbit 阅读(1956) 评论(0) 推荐(0) 编辑
C++ 智能指针Auto_PTR 分析
摘要:C++的动态内存的分配与释放是个挺折磨人的事情,尤其异常分支复杂时(比如一堆try catch中,各catch里需要做delete 掉相关的堆上分配的内存),极有可能产生内存泄露的情况。C++中提供了智能指针作为可选的解决方案, C++标准库中自带的智能指针是auto_ptr,它在大多数场景下是满足需求的。针对auto_ptr的缺点,boost和loki两套库都扩展出一些智能指针,并且boost中有两位幸运儿入选了tr1中(std::tr1::shared_ptr,std::tr1::weak_ptr)。本文就gcc中auto_ptr的实现做些分析,以飨自己。笔记采用注释源码的方式。/***. 阅读全文
posted @ 2014-04-07 09:58 bitbit 阅读(3947) 评论(2) 推荐(0) 编辑
虚函数表解析
摘要:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段的代码,没有图片,. 阅读全文
posted @ 2014-04-07 09:48 bitbit 阅读(255) 评论(0) 推荐(0) 编辑
C++ 关键字 explicit, export, mutable
摘要:explicit如果A类有某个构造函数的单个输入参数,是B类(包括基本数据类型)的对象或引用,则C++的编译器会在需要A类形参的函数调用中,自动调用该构造函数,将B类实参隐式地转换为A类实参。这种自动类型转换的好处是,避免了定义函数的两个重载版本,代价是隐式调用构造函数会增加调用开销,并可能会带来其他问题。在标准C++中,新增加了关键字explicit(显式/清楚/明确),(只能)用在带单个参数的构造函数前,告诉编译器,不能使用该构造函数进行隐式类型转换。如果确实想转换,则必须采用显式的类型转换方式来进行。从而避免了可能出现的问题和额外的调用开销。例如:class One {……};class 阅读全文
posted @ 2014-04-07 09:42 bitbit 阅读(805) 评论(0) 推荐(0) 编辑
虚析构函数的作用
摘要:我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明:有下面的两个类:class ClxBase{public:ClxBase() {};virtual ~ClxBase() {};virtual void DoSomething() { cout DoSomething();delete pTest;的输出结果是:Do something in class ClxDerived!Output from the destructor of class ClxDerived!这个很简单,非常好理解。但是,如果把类ClxBase析构函 阅读全文
posted @ 2014-04-07 09:40 bitbit 阅读(604) 评论(0) 推荐(0) 编辑
图文例解C++类的多重继承与虚拟继承
摘要:文章导读:C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。 在过去的学习中,我们始终接触的单个类的继承,但是在现实生活中,一些新事物往往会拥有两个或者两个以上事物的属性,为了解决这个问题,C++引入了多重继承的概念,C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。 举个例子,交通工具类可以派生出汽车和船连个子类,但拥有汽车和船共同特性水陆两用汽车就必须继承来自汽车类与船类的共同属性。 由此我们不难想出如下的图例与代码: 当一个派生类要使用多重继承的时候,必须在派生类名和冒号之后列出所有基类的类名,并用逗好分隔。//程序作者:管宁 //站点:www.... 阅读全文
posted @ 2014-04-07 09:39 bitbit 阅读(555) 评论(0) 推荐(0) 编辑
仅通过崩溃地址找出源代码的出错行
摘要:第一篇:作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃!“该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机器上运行得好好的,但是到了别人的机器上就崩溃了;有时自己在编写和测试的过程中就莫名其妙地遇到了非法操作,但是却无法确定到底是源代码中的哪行引起的……是不是很痛苦呢?不要紧,本文可以帮助你走出这种困境,甚至你从此之后可以自豪地要求用户把崩溃地址告诉你,然后你就可以精确地定位到源代码中出错的那行了。( 阅读全文
posted @ 2014-04-07 09:30 bitbit 阅读(3324) 评论(0) 推荐(0) 编辑

1 2 下一页