c++技术类
文章平均质量分 58
bug07250432
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树中序遍历的非递归算法
#define MAXNODE 100 //二叉树最大节点数//定义二叉树链式结构typedef struct BitNode{ char data; //数据域 struct BitNode *lchild,*rchild;//左右指针域}BitNode,*BiTree;//二叉树进行中序非递归遍历void NRInorder(BiTree t){ BiTree s;转载 2013-08-27 15:14:38 · 695 阅读 · 0 评论 -
Windows消息机制概述
消息是指什么? 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向 Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。 消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他转载 2013-08-14 18:04:28 · 510 阅读 · 0 评论 -
C++抽象类
原文地址:C++抽象类作者:匆匆路人一、定义.纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”virtual void funtion1()=0二、引入原因:1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。2、在很多情况下,基类本身生成对象是不合转载 2013-08-15 11:57:56 · 471 阅读 · 0 评论 -
华为笔试题
华为1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块转载 2013-08-15 14:53:42 · 4790 阅读 · 2 评论 -
不能被声明为虚函数的C++函数
常见的不不能声明为虚函数的有:普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 1、为什么C++不支持普通函数为虚函数? 普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时邦定函数。 2、为什么C++不支持构造函数为虚函数? 这个原因很简单,主要是从语义上考虑,所以不转载 2013-08-15 15:56:56 · 494 阅读 · 0 评论 -
c++每天进步一点点
1.派生类虚函数调用基类版本时,必须显式使用作用域操作符。如果派生类忽略了这样做,则函数调用会在运行时确定并且将是一个自身调用,从而导致 无穷递归。2.子类若没定义某方法而父类定义了,则果断调用父类的方法;3.虚函数是运行时动态绑定调用的方法。原创 2013-08-13 17:02:02 · 719 阅读 · 0 评论 -
复制构造函数和赋值操作符--深拷贝,浅拷贝
首先,大家要知道,C++类有以下这些极为重要的函数:一:复制构造函数。二:赋值函数。我们先来讲复制构造函数。什么是复制构造函数呢?比如,我们可以写下这样的代码:String test1(test2);这是进行初始化。我们知道,初始化对象要用构造函数。可这儿呢?按理说,应该有声明为这样的构造函数:String(const String &);可是,我们并没有定义这个构造函数呀转载 2013-08-27 17:35:54 · 836 阅读 · 0 评论 -
_stdcall和__cdecl关键字
1、_stdcall是Pascal方式清理C方式压栈,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 int f(void *p) -->> _f@4(在外部汇编语言里可以用这个名字引用这个函数)2、C调用约定(即用__cdecl关键字说明)(The C defa转载 2013-08-27 18:28:06 · 618 阅读 · 0 评论 -
类对象创建时占用内存
一个Class对象需要占用多大的内存空间。最权威的结论是:1.非静态成员变量总合。即,非静态数据成员占用内存,而静态数据成员和函数成员不占用内存(它们是属于类的,不是属于对象)。2.加上编译器为了CPU计算,作出的数据对齐处理。3.加上为了支持虚函数,产生的额外负担。虚函数占用4个字节。不论几个虚函数都算一个虚函数。 介绍完了理论知识后,再看看再找一个例子看转载 2013-08-15 16:34:55 · 857 阅读 · 0 评论 -
派生类是否继承基类中的private成员,若继承为何不能在成员函数中访问?
继承的方式有三种,分别是公有继承、私有继承、保护继承;公有继承的格式: class child:public base{ .... .... }私有继承的格式: class child:private base{ .... .... }保护继承的格式:class child:protected base{.......转载 2013-08-15 17:23:40 · 2998 阅读 · 0 评论 -
C++内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权转载 2013-08-15 18:00:20 · 732 阅读 · 0 评论 -
定义一个继承层次的例子-Shape类Circle类的定义
http://hi.baidu.com/wolfand11/item/03eec320e8a8228a6e2cc3d8昨天回复了一个Shape类的问题,涉及到了C++中的多态等问题,这里分析一下。问题的要求是:定义一个Shape基类,然后定义它的派生类 Circle、Rectangle 、Triangle,要求每个派生类有输出面积的函数,指定在实现中要使用C++的多态。转载 2013-08-16 15:42:15 · 3721 阅读 · 0 评论 -
二叉树的基本操作小结
http://www.cnblogs.com/marrywindy/archive/2010/08/21/1805336.html二叉树的一般操作,实现了下:主要练习了二叉树的非递归遍历,利用栈,和队列来完成。算法思想,没描述清楚,表达能力很差...崩溃.... 代码#include "stdio.h"#include "malloc.h"#d转载 2013-08-27 14:33:25 · 623 阅读 · 0 评论 -
抽象类的使用
接口是完全抽象的成员集合,他的成员都无法在接口定义时实现,我们可以将它看作是为操作定义合同。接口的实现完全留给开发者去做。Java中:类只能是从一个基类继承,所以如果要使用抽象类为一组类提供多态性,这些类必须都是从那个类继承的接口不但可以用一个类或结构实现多个接口,一个接口还可以有多个实现如果预计要创建组件的多个版本,我们应该创建抽象类。这是因为,抽象类提供简单易行的方法来控制组件转载 2013-08-13 20:26:15 · 625 阅读 · 0 评论 -
node.js宣言(这个名字好霸气)
http://cnodejs.org/topic/50b9ff94637ffa41554a87c5引言:node.js 新兴的服务端技术,在很多公司已经开始悄然流行。是web server开发中解决高并发技术上的一个不错的选择。仅以此文,代表着HarryZD(不用纠结)开始进入node.js世界。node.js。几个月以前,我对这项技术做过初步的了解。但是因为当时对JAVA的执着,没有转载 2013-08-16 10:20:40 · 576 阅读 · 0 评论 -
AVL树旋转的操作
AVL树的基本操作一般涉及运作同在不平衡的二叉查找树所运作的同样的算法。但是要进行预先或随后做一次或多次所谓的"AVL旋转"。转载 2013-08-29 17:59:24 · 503 阅读 · 0 评论 -
判断俩链表是否相交
http://blog.youkuaiyun.com/lihappy999/article/details/7330175给出俩个单向链表的头指针,比如h1,h2,判断这俩个链表是否相交。为了简化问题,我们假设俩个链表均不带环。问题扩展:1.如果链表可能有环列?2.如果需要求出俩个链表相交的第一个节点列?建立hash表:由于节点地址指针就是一个整型,假设链表都是在堆中动态创转载 2013-08-30 11:41:04 · 481 阅读 · 0 评论 -
各类模式的优缺点
1>工厂模式的优缺点: 所谓工厂,必然具备加工的功能!它有助于你的代码设计!个人觉得他可以将代码模块化!如果你需要一件JackJones衬衫,你仅仅需要呼叫JackJonesFactory返回一件给你就是!可能你需要考虑JackJonesFactory内部是怎样实现的,但是不应该是你需要一件衬衫时考虑的事情。原创 2013-08-30 13:48:48 · 793 阅读 · 0 评论 -
2013阿里巴巴暑期实习笔试
答题说明: 1.答题时间90分钟,请注意把握时间; 2.试题分为四个部分:单项选择题(10题,20分)、不定向选择题(4题,20分)、填空问答(5题,40分)、综合体(1题,20分); 3.其他一些乱七八糟的考试说明。 一、单项选择题 1.下列说法不正确的是:(D) A.SATA硬盘的速度速度大约为500Mbps/s B.读取1转载 2013-09-06 11:02:05 · 855 阅读 · 0 评论 -
auto_ptr
auto_ptr解析By SmartPtr(http://www.cppblog.com/SmartPtr/)auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那转载 2013-09-01 22:30:44 · 511 阅读 · 0 评论 -
卡特兰数
百科名片 卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。目录简介原理应用扩展C++应用展开简介原理应用扩展C++应用展开编辑本段简介卡特兰数又称卡塔兰数,转载 2013-09-09 15:31:06 · 715 阅读 · 0 评论 -
点到点与端到端通信有什么区别
点到点是物理拓扑,如光纤,就必须是点到点连接,DDN专线也是,即两头各一个机器中间不能有机器。点到点是网络层的,你传输层只认为我的数据是从a直接到e的,但实际不是这样的,打个比方,传输层好象领导,他发布命令:要干什么什么事,但真正干的不是他,真正干的是员工,也许领导认为很简单一句话就可以干好的事,在员工眼里却是难于登天,手续极其烦琐,所以传输层是发布命令的领导,他说的是命令,也就是最终的目的,所转载 2013-09-04 17:10:55 · 1944 阅读 · 0 评论 -
字节流
字节流(byte stream)不包含边界数据的连续流字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStream和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符转载 2013-09-04 18:10:58 · 579 阅读 · 0 评论 -
WM_PAINT消息总结
UpdateWindow()函数是让消息队列中的WM_PAINT消息立刻进入window procedure而得到处理,不是说由UpdateWIndow()产生WM_PAINT消息,WM_PAINT消息是由于窗口中存在无效区域需要重汇而产生的。设想一下如果你的客户区没有无效区域,你调用再多的UpdateWindow()也不能产生WM_PAINT消息,由于WM_PAINT转载 2013-09-12 11:24:50 · 858 阅读 · 0 评论 -
五大常用算法之一:分治算法
分治算法http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很转载 2013-10-04 13:08:23 · 539 阅读 · 0 评论 -
C++中的常见术语
内存对齐常量折叠 堆栈解退(stack unwinding) 模板特化模板偏特化 模板实例化 函数对象 单一定义规则(One-Definition Rule,ODR) 自引用 对象切片(object slicing)/切割:当把一个派生类对象赋给一个基类对象时,会发生对象切割。(另外用基类对象强制转换派生类对象也会),多态的实现是通过指针和引用;而对转载 2013-08-21 17:29:22 · 536 阅读 · 0 评论 -
css sprite 如何定位的
1位置是在ps作图时就量好了,在做样式的时候再写进去,不是随便试的。png图片兼容转载 2013-04-23 14:57:41 · 682 阅读 · 0 评论 -
类的成员函数
问题(知识点)描述:a. 在 C++的类的成员函数中,允许直接访问该类 的对象的私有成员变量。b. 在类的成员函数中可以访问同类型实例的私有变量 。c.拷贝构造函数里, 可以直接访问另外一个同类对象(引用) 的私有成员。d. 类的成员函数可以直接访问作为其参数的同类型对象的私有成员。举例描述上述知识:1).在拷贝构造函数中可以访问引用对象的私有变量:例如:class P转载 2013-05-24 13:58:13 · 566 阅读 · 0 评论 -
关于C里面宏替换的问题
http://blog.chinaunix.net/uid-27714502-id-3461678.html分类: C/C++先看一个经典的面试题:#include #define f(a,b) a##b#define g(a) #a#define h(a) g(a)int main(){printf("%s\n", h(f(1,2)))转载 2013-07-16 23:22:21 · 693 阅读 · 0 评论 -
_stdcall,_cdecl区别
_cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划转载 2013-08-19 10:37:38 · 482 阅读 · 0 评论 -
“GDI“ 和“GDI+”有区别吗?
GDI在Windows中定义为Graphics Device Interface,即图形设备接口,是Windows API(Application Programming Interface)的一个重要组成部分。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在: (1)用户通过调用转载 2013-08-07 18:47:52 · 563 阅读 · 0 评论 -
i=i+1 i++ ++I的区别? 请高手解释一下.
计算机内部实现过程有别,详细如下:i=i+1的过程相当: temp=i+1; i=temp;i++的过程相当: temp=i; i=temp+1; return temp;++i的过程最简单: i增1然后return i 的值,一步完成,没有给任何temp变量赋值:) (无法用式子确切表达,请神灵原谅我的笨拙:)转载 2013-08-19 17:14:37 · 807 阅读 · 0 评论 -
链表的头指针在函数里修改怎么没有用?
void del(head,num)struct student *head;long num;{struct student *p1,*p2;//表空if(head==NULL){printf("\nlist null!\n");return ;}p1=head;//寻找要删除的节点while(p1->num!=num && p1->next!=N转载 2013-08-19 22:13:50 · 1079 阅读 · 1 评论 -
编译一个空类会默认生成哪些函数?
默认构造函数析构函数拷贝构造函数赋值运算符(operator=)取址运算符(operator&)(一对,一个非const的,一个const的)当然,所有这些只有当被需要才会产生。比如你定义了一个类,但从来定义过该类的对象,也没使用过该类型的函数参数,那么基本啥也不会产生。在比如你从来没有进行过该类型对象之间的赋值,那么operator=不会被产生。最后那一对取址运算符是转载 2013-08-20 10:50:15 · 1471 阅读 · 0 评论 -
c++目录作用
include 包含程序定义的一些东西的头文件,比如宏,结构定义,函数定义,类型定义。bin 包含可执行文件。lib 包含程序实现文件编译生成的library.如果需要用到这些library,首先它的include头文件,然后再link的时候link上lib.转载 2013-08-07 10:27:06 · 454 阅读 · 0 评论 -
关于迭代器失效的一些认识
众所周之当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以便用重新获取新的有效的迭代器进行正确的操作: iter=vec.insert(iter); iter=vec.erase(iter); view plainiter=vec.insert(iter)转载 2013-08-19 17:16:24 · 1034 阅读 · 0 评论 -
重载函数的返回值相同与不同都可以吗
以下三个函数能够成重载的吧int biggest(int a,int b,int c);{ ......}float biggest(float a,float b){ ......}float biggest(float a,float b,float c){ ......}函数重载只看参数个数和类型,不看返回值。以上三个函数都可以。但不能出现只是返回值不同转载 2013-08-20 14:15:55 · 11275 阅读 · 0 评论 -
同步/异步与阻塞/非阻塞的区别
我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的转载 2013-08-21 11:32:34 · 524 阅读 · 0 评论 -
浅谈c,c++输入输出
最近写程序,被最简单的输入输出整了一头雾水,真正的体验到“不识庐山真面目,只缘身在此山中”的压抑感,好在不甘沉沦的偶,几经爬山涉水,终于走出庐山,恍惚间有种“会当凌绝顶,一览众山小”的畅快,接下来我将最近几天的所得与大家分享,便于大家少走弯路,进入正题,你试着用c语言定义一个字符型的二维数组3*3的就可以,然后输入三行三列的“*”,输出结果看看是否和输入的一样,如果一样的话,下文对你来说就没有太大原创 2012-10-29 10:16:00 · 570 阅读 · 0 评论 -
关于析构函数的调用顺序
构造好比分东西先长辈,后朋友,最后自己析构好比干活先自己,后朋友,最后长辈转载 2013-08-21 23:08:43 · 428 阅读 · 0 评论
分享