C++
文章平均质量分 71
思路清晰的小王
How
展开
-
队列的基本操作2
1.链式队列//队列结点结构体typedef struct QNode{ QElemType data; QNode *next;}*Queueptr;------------------------------//指向结点的指针struct LinkQueue{ Queueptr front,rear;}转载 2015-10-20 21:55:31 · 391 阅读 · 0 评论 -
对寄存器ESP和EBP的一些理解
PS:EBP是当前函数的存取指针,即存储或者读取数时的指针基地址;ESP就是当前函数的栈顶指针。每一次发生函数的调用(主函数调用子函数)时,在被调用函数初始时,都会把当前函数(主函数)的EBP压栈,以便从子函数返回到主函数时可以获取EBP。下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码假设执行函数前堆栈指针ESP为0xAAAAAAA ;转载 2016-05-16 16:13:22 · 485 阅读 · 0 评论 -
ebp与esp讲解
一.概念分析经常看到下面这两句:pushl %ebp movl %esp,%ebp -------------------------------------------------------------------------------- esp是堆栈指针 ebp是基址指针 那两条指令的意思是 将栈顶指向 ebp 的地址 ----转载 2016-05-16 16:22:53 · 724 阅读 · 0 评论 -
详解一道C++笔试题,考察重载、覆盖、多态
C++版看到的,说是面试宝典里的题目,考察重载、覆盖、多态等概念,比较有代表性。今天早上远程辅导 Yan Wang 同学学习 Qt 时还想到了这个题目,如果你能够正确理解这个题目,说明对于 C++ 中的函数重载、覆盖、虚函数、多态等有了正确的认识。然后呢,再来学习 Qt 就顺风顺水了。 题目是酱紫的:#include #include using namespace转载 2016-05-16 16:32:54 · 299 阅读 · 0 评论 -
vs2010 fatal error LNK1169: 找到一个或多个多重定义的符号
生成一个项目的时候会有两部分:编译和链接。在链接的时候发生这个错误,1>pluginMain.obj : error LNK2005: _DllMain@12 已经在 helix_plugin2Cmd.obj 中定义1>pluginMain.obj : error LNK2005: "struct HINSTANCE__ * MhInstPlugin" (?MhInstPlugin@@原创 2016-05-05 16:38:11 · 9757 阅读 · 2 评论 -
c/c++ 结束进程
1.使用ExitProcess()结束进程 进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的。当主线程的进入点函数返回时,进程也就随之结束。这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的清除。除了这种进程的正常退出方式外,有时还需要在程序中通过代码来强制结束本进程或其他进程的运行。ExitProcess()函数的原型为:转载 2016-05-17 10:53:16 · 3442 阅读 · 0 评论 -
nmake下一些错误的解决办法
最近编译工程用到了windows下nmake工具,遇到了很多的问题,在网上苦寻答案,终于得到解决。现在把遇到的问题及解决办法写下来,希望给大家一些帮助。1.NMAKE:fatal error U1077.“cl.exe” return code 0xc0000135产生原因:在安装visual studio的时候没有勾选注册环境变量导致的。解决办法:在系统环境变量中加入vi转载 2016-04-22 10:41:57 · 17814 阅读 · 0 评论 -
搭建vs2010 boost开发环境
一、编译boost库第一步:下载boost库,下载地址http://sourceforge.net/projects/boost/files/boost/1.55.0/第二部:解压boost库,例如解压到D:\boost\boost_1_46_1第三部:开始->程序->MicrosoftVisual Studio 2010->Visual Studio Tools->Vis转载 2016-05-05 14:27:58 · 498 阅读 · 0 评论 -
用makefile脚本方式调用vs 2010 的nmake来编译工程的实例
1、准备代码main.c如下void main(){ printf("\r\n Hello Shanghai.\r\n"); return;}2、找到vs2010 安装目录 D:\Program Files\Microsoft Visual Studio 10.0\VC\bin 在该目录下创建makefile文件,文件名为m转载 2016-05-18 13:49:58 · 1935 阅读 · 0 评论 -
分析进程、线程的终止
PROCESS_ALL_ACCESS包含PROCESS_TERMINATE当需要终止进程时,需要是PROCESS_TERMINATE,因为他有终止的权限,PROCESS_ALL_ACCESS只有读写的权限。如果是有窗口的,使用spy++找出它的classname,或者,caption,假如,它的classname是MyProc;HWND hWnd;hWnd = Find转载 2016-05-19 11:35:34 · 3594 阅读 · 0 评论 -
一个函数使用另一个函数中的变量
有两种情况下可以:一、调用者通过被调用函数的返回值或形参(输出参数)来使用被调用函数中的变量的值.前提,必须在被调用函数执行完毕后.int max( int a,int b ){int z;if (a>b) z=a;else z=b;return z;}main(){int x;x=max(3,9); //x可使用到max函数的返回值z的值pri转载 2016-05-19 11:40:47 · 22647 阅读 · 0 评论 -
在主函数中调用其他文件内的函数
就是再写个头文件,对调用文件里的函数进行申明。再将头文件写在主函数所在的文件里。如下面所示://文件a.c#include "a.h"int display(int a,int b){coutreturn 0;}//文件a.h#include int display(int ,int );//文件main.c#include "a.h"int m转载 2016-05-19 11:44:14 · 15329 阅读 · 2 评论 -
程序运行完后不让窗口一闪而过
可能经常会遇到这样的情况,想要程序运行完后,窗口继续保留。VC或VS下常用的方法是在main函数退出前加一句:system(“pause”)这样的语句,但是这种做法有一个问题就是:在这样的情况下,其实程序并没有真正结束。也就是说main()函数并没有执行完。假设要看一下析构函数的自动调用,就看不到了。比如下面的例子#include#includeusing namespace st转载 2016-05-19 11:47:13 · 1480 阅读 · 1 评论 -
关于new和delete
当你写下new和delete的时候,到底发生了什么事呢,让我们来做个试验看看。写一段小代码:class a{public: a() { foo(); } int foo() { return 0; } ~a() { bar(); } int bar() { return 1; }};int _tmain(int argc, _TCHAR* argv[]){ a* tmp = n转载 2016-05-16 16:09:22 · 473 阅读 · 0 评论 -
C++对象的内存分布和虚函数表
http://blog.sina.com.cn/s/blog_60e96a410100lirk.html转载 2016-05-16 16:05:17 · 329 阅读 · 0 评论 -
实例讲解 继承封装多态(一)
1.#include#define PI 3.1415926;using namespace std;class Shape //抽象类的 定义{public: virtual double GetArea() = 0; //纯虚函数 virtual double GetPerim() = 0; //纯虚函数};原创 2016-05-12 13:59:47 · 2788 阅读 · 0 评论 -
const和static const的区别
对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const 应该就是上面两者的合集.转载 2016-04-27 15:11:10 · 23826 阅读 · 2 评论 -
static 和 const的区别与联系-续
static 是c++中非常常用的修饰符,他被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全方面分析static 修饰符的实质。 static 的两大作用:一、控制存储方式: static被引入以告知编译器,将变量存储在程式的静态存储区而非栈上空间。 1、引出原因:函数内部定义的变量,在程式执行到他的定义处时,编译器为他转载 2016-04-27 15:14:11 · 241 阅读 · 0 评论 -
c++容器使用经验总结
第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。v转载 2016-04-28 14:17:58 · 295 阅读 · 0 评论 -
C++中的容器类详解
C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。1、vector 连续存储结构,每个元素在内存上是连续的; 支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操转载 2016-04-28 14:24:17 · 240 阅读 · 0 评论 -
构造函数和析构函数
#include #include using namespace std; class stud//声明一个类{ private://私有部分 int num; char name[10]; char sex; public://公用部分 stud(int n,const char nam[],char原创 2016-05-12 14:24:42 · 293 阅读 · 0 评论 -
java中new关键字和c++中的new有什么区别
java中new返回的对像引用,而c++中返回的是对像的实际地址。没有delete的原因是java有垃圾回收机制,当一个对像没有被引用时,系统会自动将其清理掉(也就是系统自动执行了delete)。创建对象:C++和Java的异同在标号为(1)的构造函数调用中,我们可以把u本身当作一个User对象。这个构造函数调用填充由u对象所占据的内存区域,如下原创 2016-05-12 14:40:19 · 6658 阅读 · 2 评论 -
实例讲解 封装继承多态(二)
一、封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 封装的意义: 封装的意义在于保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护它不被其它的函数意外的修改。 封装提供了一个有效的途径来保护数据原创 2016-05-12 14:45:11 · 399 阅读 · 0 评论 -
类中成员函数的实现,放在类块里和外部实现的区别
class Weapon //兵器类{private: string _name; //兵器名 int _power; //威力值public: void show() { cout<< "名字:" << _name << ",威力值:" << _power <<endl; }; void setName(string name = "赤手空拳",转载 2016-05-12 16:38:38 · 9212 阅读 · 2 评论 -
C++中的引用(&)
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、转载 2016-05-13 09:54:51 · 285 阅读 · 0 评论 -
实例讲解 封装继承多态(三)
面向对象程序设计中的多态性是指向不同的对象发送同一个消息,不同对象对应同一消息产生不同行为。在程序中消息就是调用函数,不同的行为就是指不同的实现方法,即执行不同的函数体。也可以这样说就是实现了“一个接口,多种方法”。 从实现的角度来讲,多态可以分为两类:编译时的多态性和运行时的多态性。前者是通过静态联编来实现的,比如C++中通过函数的重载和运算符的重载。后者则是通过动态联编来实现的,在C转载 2016-05-13 11:13:03 · 943 阅读 · 0 评论 -
对于结构化异常处理(SEH)的进一步探索
对于结构化异常处理(SEH)的进一步探索本文关键字:SEH, _except_handler3, Windows, VisualC写本文的起因Matt Pietrek 关于结构化异常处理的文章 A Crash Course on the Depths of Win32 Structured Except转载 2016-05-16 14:32:21 · 944 阅读 · 0 评论 -
多个文件中使用同一个全局变量extern
1.a.hextern int ch;a.cppint ch;ch=10;...b.hb.cppcout在改变值得文件中:头文件件中用extern声明是外不可用,在cpp中再声明一遍(不用extern),然后就可以在cpp文件中改变值使用了。在使用的cpp文件中:头文件中不用管,只在cpp文件中,直接使用就可以了,原创 2016-06-13 21:52:07 · 4110 阅读 · 0 评论