![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
wh_
这个作者很懒,什么都没留下…
展开
-
关于C++11右值引用
右值引用、std::move、std::forward、移动构造原创 2022-12-16 22:53:00 · 207 阅读 · 1 评论 -
windows下 静态/动态库的一些总结
静态库:静态库比较简单制作静态库:用C语言时只用一个.c文件就可以了(使用.c默认使用的是C语言的编译器),由于C编译器的缘故,不用提供头文件。使用库时只用#pragmacomment(lib,"相对path") 就可以了使用了。C++使用时也就是后缀名为.cpp时,就必须在使用的时候提供声明。所以制作静态库时也需要一个头文件。写关于函数或类的声明。同样,在使用库时也需要#pragm原创 2016-08-29 21:02:06 · 531 阅读 · 0 评论 -
C++中定义全局变量的方法
比如定义一个全局变量varible在.h文件中extern int varible;在.h文件里应该可以不用写的,但为了方便其它文件中调用,所以按照上面的方法写。在.cpp文件中int varible;然后其它类中想要访问这个全局变量只要包含.h就可以了。原创 2016-08-29 21:02:04 · 2431 阅读 · 0 评论 -
C++中的单例模式(懒汉模式、饿汉模式及线程安全问题)
1 教科书里的单例模式 我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。 上代码: 123456转载 2016-12-13 22:54:16 · 1406 阅读 · 0 评论 -
C++ STL中哈希表 hash_map介绍
目录(?)[+] 0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦转载 2016-12-26 10:25:02 · 378 阅读 · 0 评论 -
STL&所有算法
STL算法部分主要由头文件,,组成。要使用STL中的算法函数必须包含头文件,对于数值算法须包含,中则定义了一些模板类,用来声明函数对象。 STL中算法大致分为四类: 1、非可变序列算法:指不直接修改其所操作的容器内容的算法。 2、可变序列算法:指可以修改它们所操作的容器内容的算法。 3、排序算法:包括对序列进行排序和合并的算法、搜索算法以及原创 2016-08-29 21:02:49 · 366 阅读 · 0 评论 -
COM组件原理
在COM中,接口就是一个象类,每个接口有一个接口ID(uuid)。一个COM组件通常是连续继承下来的类,比如 IUNknow ->IDispath->IXX->CXX。这就形成了一个COM组件,当然组件一般是一个钻石继承的样子,这里为了简化原理把他们当成一个串形继承下来。每个COM组件都有一个CLSID(uuid),这个CLSID是注册的时候写进注册表的。这样就可以通过查询注册表中的CLSID原创 2017-08-30 11:37:51 · 2867 阅读 · 0 评论 -
#pragma data_seg的用法
一个dll 被多个exe加载后,因为有copy-on-write机制,里面的全局变量是不会被相互影响的,但如果想让他们相互影响,可以使用#pragma data_seg("Shared") int g_data=3; #pragma data_seg() #pragma comment(linker,"/section:Shared,rws") 这种写法。同理一个exe有...原创 2018-10-17 11:01:39 · 1048 阅读 · 0 评论 -
std::string、std::wstring 的length()\size()
首先length()与size()的函数实现是一样的,所以只讨论其中一种,就拿length()来说吧差别在string 与wstring,经过调试 string返回的是字节数,而wstring返回的是字符数,比如“中国123” 在string中返回 的是7,而wstring返回的是5...原创 2019-01-21 14:35:18 · 2674 阅读 · 0 评论 -
C++为什么设计抽象类?
网上也有许多介绍,但我总觉得不能一针见血,根据自己工作实际中用到的,才知道有些时候真的是需要抽象类先说一种场景:A设计了一项功能他把此功能封装成一个类,以类的方式提供,他要把这项功能提供给B、C,我们理所当然的想到他会把源码或者编译成的库+h文件给BC。现在在修改一下这个场景:如果 ABC做的是同一个项目,为了保证代码不重,方便维护。这样就不能再使用上面的方法了,只能将头文件提供给B...原创 2019-03-17 09:51:48 · 685 阅读 · 0 评论 -
MFC中添加快捷键
原文地址:MFC中添加快捷键作者:zhangzheMFC中添加快捷键基于Dialog的MFC工程中如何添加快捷键呢?大致分为以下几个步骤:1. 在资源视图中添加资源,选择"Accelerator"选项新建即可;2. 打开新建的文件夹下的"IDR_ACCELERATOR1"中编辑,其中包括ID、修饰符、键、类型。ID中选择你要添加快捷键的菜单、按钮的ID编号,修饰符中选择你是否要使用转载 2016-08-29 21:02:09 · 8204 阅读 · 0 评论 -
字节对齐(摘自CSDN)
笔试的时候经常有一些字节对齐的题目,每次都要去看看但每次都会忘记,借用一下别人总结比较好的,以后经常翻看:3条原则我自己设计了一个口诀,便于记忆(前面有N个跟我一样大的人,而怪兽前面有N个他吃掉的最大的那个人的大小,我们这个整体是由最大的那个人复制的)写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字原创 2016-08-29 21:02:11 · 458 阅读 · 0 评论 -
static与全局变量的应用
static 局部变量 与全局变量 都可以做到退出块后状态不丢失的效果,那什么时候使用static,什么时候使用 全局变量呢?貌似static更轻量级一些,因为有点单例模式中使用时才产生的效果。但全局变量有static不可胜任的地方:全局变量可以在任何地方访问。但static变量只能在当前域里访问原创 2016-09-07 13:14:08 · 583 阅读 · 0 评论 -
建议慎用boost::weak_ptr来避免智能指针循环引用
本文摘自:http://blog.sina.com.cn/s/blog_48d4cf2d0100uhgt.html如果让我说C/C++相比拥有GC机制的语言如Java,开发时感觉最大的不同是什么。我想繁琐易错的内存管理肯定会排在第一位。所以自从见到基于RAII的boost智能指针实现,觉得日子好过了很多呵呵。智能指针相比GC,优点很多:效率高计算代价低即时性好。但有一个很致命的转载 2016-09-05 16:56:24 · 705 阅读 · 0 评论 -
sendmessage与postmessage的区别
一、函数功能该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回。二、函数原型SendMessage函数的原型为LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPa原创 2016-08-29 21:02:54 · 698 阅读 · 0 评论 -
C++ 多态的实现原理--虚函数表
1、明白虚函数表在代码段,实例中存放的是指向表地址的指针2、学会获取虚函数表里的任意函数的地址3、对2的延伸。通过内存的分析认识二级指针的意义。前言本文摘自CSDN。原文地址:http://blog.csdn.net/haoel/article/details/1948051/ C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,原创 2016-08-29 21:02:44 · 606 阅读 · 0 评论 -
C++中 隐藏、重写(覆盖)解析
本文为博主原创。引用请注明出处。由于重载比较清楚,很多人都明白,不再多说。条件A:父类指针或引用指向子类对象。隐藏:子类中如果有一个函数(无论是否为虚函数,虚函数只在条件A中有用。所以如果没有条件A就无视virtual,把他当做平常函数一样)与父类同名,则继承下来的所有同名函数都被隐藏而不能使用。重写:其实就是父类中加了一个virtual关键字,子类中又重新原创 2016-08-29 21:02:42 · 481 阅读 · 0 评论 -
C++标准异常
C++标准库异常类继承层次中的根类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下:namespace std { class exception { public: exception() throw(); //不抛出任何异常原创 2016-08-29 21:02:39 · 533 阅读 · 0 评论 -
fopen文件方式与二进制方式打开文…
C语言fopen()打开文本文件与二进制文件的区别在学习C语言fopen()函数后,知道它的第二个参数是标志字符串。如果字符串中出现'b',则表明是以打开二进制(binary)文件,否则是打开文本文件。那么什么是文本文件,什么是二进制文件呢?从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁原创 2016-08-29 21:02:32 · 6411 阅读 · 0 评论 -
C++智能详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::share原创 2016-08-29 21:02:34 · 618 阅读 · 0 评论 -
进程间通信
程序员必须让拥有依赖关系的进程集协调,这样才能达到进程的共同目标。可以使用两种技术来达到协调。第一种技术在具有通信依赖关系的两个进程间传递信息。这种技术称做进程间通信(interprocesscommunication)。第二种技术是同步,当进程间相互具有合作依赖时使用。这两种类型的依赖关系可以同时存在。一般而言,进程有单独的地址空间。我们可以了解下可执行程序被装载到内存后建立的一系列映射等原创 2016-08-29 21:02:29 · 432 阅读 · 0 评论 -
MFC模态对话框与非模态对话框的创…
模态对话框十分简单。只要domodal()就可以了。下面说说非模态对话框:CXXXDlg *pDlg = new CXXXDlg();pDlg->Create(CXXXDlg::IDD);pDlg->ShowWindow(SW_NORMAL);上面 的是创建。销毁:重写 OnOk()与OnCancel()在里面把默认的代码删掉,然后只写一个DestroyWindow();最后再原创 2016-08-29 21:02:19 · 367 阅读 · 0 评论 -
内嵌汇编(C++中嵌入汇编语句)
原文地址:http://blog.sina.com.cn/s/blog_622bd1660100pdqm.html为了加速游戏,一提起汇编语言,大家也许会感到很神秘。其实如果你学起来就会发现,它并非想象中那样难。特别是内嵌汇编,由于它和C++紧密结合,使你不必考虑很多烦琐的细节(例如输入输出函数的写法),学习起来比较容易。使用内嵌汇编,特别是使用MMX指令,可以大大提高各种游戏中常转载 2016-09-08 15:10:44 · 2846 阅读 · 0 评论