c++
蒲心
这个作者很懒,什么都没留下…
展开
-
c++设计模式——装饰模式
#pragma onceclass MilkPowder{public: MilkPowder(); virtual ~MilkPowder(); virtual void SuppleEnergy();};#include "MilkPowder.h"#include <QDebug>MilkPowder::MilkPowder(){}Milk...原创 2020-03-19 21:55:55 · 210 阅读 · 0 评论 -
c++设计模式——观察者模式
#pragma onceclass IObserver{public: virtual ~IObserver() {} virtual void Update(float tmp, float humidity, float pressure) = 0;};#pragma once#include "IObserver.h"class Observer : pub...原创 2020-03-17 20:28:21 · 191 阅读 · 0 评论 -
c++设计模式——策略模式
#pragma once#include "FlyBehavior .h"class Duck{public: Duck(FlyBehavior* flybh); virtual ~Duck(); void Swim(); void PerformFly(); virtual void Display() = 0;private: FlyBehavior* m_Fl...原创 2020-03-15 19:27:44 · 216 阅读 · 0 评论 -
c++基础学习之——类
封装:实现的具体细节不对外暴露,仅向用户暴露接口。继承:保留基类的属性和行为。 改进基类的属性和行为。 添加新的属性和行为。多态:相同的行为方式可能导致不同的行为结果,即产生了多种形态行为。类的更深层理解:虚函数和虚表,有时间学习...原创 2020-03-11 21:32:00 · 183 阅读 · 0 评论 -
UML练习
类图的三个基本组件 类名 属性 方法类的几个主要关系 association 关联 directedAssociation 指向性关联 aggregation 聚合 composition 组成 generalizatio...原创 2020-03-08 17:24:07 · 816 阅读 · 0 评论 -
C++ 什么是句柄?为什么会有句柄?HANDLE
出处:http://www.cppblog.com/mymsdn/archive/2009/02/19/handle-in-windows.html从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗?然后,指针其实也是一转载 2017-10-10 23:12:32 · 6973 阅读 · 0 评论 -
在VS中添加lib库的三种方法
注意:1、每种方法也要复制相应的DLL文件到相应目录,或者设定DLL目录的位置,具体方法为:"Properties" -> "Configuration Properties" -> "Debugging",在"Working Directory"设置dll的路径就可以了2、无论是设置DLL目录,或者是Lib目录,亦或是头文件的目录,都有release版本和debug版本的区分,每种版转载 2017-10-11 23:51:19 · 336 阅读 · 0 评论 -
编程书籍
《算法导论》Thomas H.Cormen、 Charles E.Leiserson《深入理解计算机系统》Randal E. Bryant《人月神话》Frederick P.Brooks《编程珠玑》Jon Bentley《高性能MySQL》施瓦茨 (Baron Schwartz)、 扎伊采夫 (Peter Zaitsev)《代码大全》Steve McConnell《程序员修炼之道:从小工到专家》亨原创 2017-10-12 11:37:02 · 214 阅读 · 0 评论 -
通过WM_COPYDATA消息完成进程间通信
完成进程间通信最简单的方式就是发送WM_COPYDATA消息。(1)发送WM_COPYDATA消息SendMessage(接收窗口句柄, WM_COPYDATA, (WPARAM)发送窗口句柄, (LPARAM)©Data);其中的copyData是要发送的数据,类型为COPYDATASTRUCT结构体:typedef struct tagC转载 2017-10-23 14:50:01 · 362 阅读 · 0 评论 -
c++类的使用
一个函数需要另一个类里面的函数做一些事情,这个类是一些不是一个处理方法,将这个类分化。定义一个接口,将这个接口分化为多个具体处理方法的类(这个类继承接口类)。例: 函数调用CurveDataParser curveParser(str); //先进到大坑,大坑构造里面根据str分化进到小坑(坑为类)curveParser.SetPath(path);原创 2017-08-13 00:13:59 · 565 阅读 · 0 评论 -
指针
常规用法: char *p; p = new char[n]; delete []p;理解:int *ptr; 指针所指向的类型s是intchar *ptr; 指针所指向的类型是charint **ptr; 指针所指向的类型是int*int(*ptr)[3]; 指针所指向的数据类型是 int ()[3],ptr为指向含3个元素的一维整形数据的指针变量指原创 2017-09-05 15:42:33 · 332 阅读 · 0 评论 -
c++设计
1、假设设计以下函数fn(参数随意){ A() //固定 C() //不定 B() //固定}要求在A与B不变的情况下可以任意改变C(),C()的函数形式不统一,且传入不同的C()时不用额外修改函数思路:参数不固定,那就给固定下来,参数和返回值使用结构体封装起来,用void*指针传入,然后用int型flag标识是哪个原创 2017-09-07 15:51:52 · 363 阅读 · 0 评论 -
C++ 构造函数后面的冒号的作用
其实冒号后的内容是初始化成员列表,一般有三种情况: 1、对含有对象成员的对象进行初始化,例如, 类line有两个私有对象成员startpoint、endpoint,line的构造函数写成: line(int sx,int sy,int ex,int ey):startpoint(sx,sy),endpoint(ex,ey){……} 初始化时按照类定义中对象成转载 2017-10-17 15:42:56 · 793 阅读 · 0 评论 -
c++技巧
1 typedef 为现有类型创建一个新的名称如:typedef vector SW SW即为vector的名称2、原创 2017-08-10 22:39:39 · 245 阅读 · 0 评论 -
c++面试题
1、已知类String的原型为:classString{public:String(constchar*str=NULL);//普通构造函数String(constString&other);//拷贝构造函数~String(void);//析构函数String&operate=(constString&other);//赋值函原创 2017-11-13 18:31:41 · 597 阅读 · 0 评论 -
静态成员函数
1.静态成员函数的地址可用普通函数指针储存,而普通成员函数地址需要用 类成员函数指针来储存。举例如下: class base{ static int func1(); int func2(); }; int (*pf1)()=&base::func1;//普通的函数指针 int (base::*pf2)()=&base::func2;//成员函数指针 2.静原创 2017-10-09 11:21:45 · 1699 阅读 · 0 评论 -
map使用
map> strData; vector vStr; for(int j = 0; j < col; j++) { vStr.clear(); for(int i = 0; i < strVec.size(); i++) { if(i % col == j) { CSt原创 2017-09-29 10:29:12 · 290 阅读 · 0 评论 -
MFC控件
1、列表框常用方法:AddString 在列表框最后添加列表项InsertString在列表框中指定位置添加列表项DeleteString删除一列表项ResetContent清空列表项FindString 查找列表项GetCurSel 返回当前选择项的索引SetCurSel 选择某个列表项SetItemData 为列表项关联一个32位原创 2017-09-03 17:47:20 · 356 阅读 · 0 评论 -
C++ fstream流的eof()函数多读一行的问题
while(!readfile.eof()) { readfile>>x; }会出现将最后一行数据读两次。eof是end of file的意思,用来判断是否到了文件结尾。微软的文档说明如下:按照一般思维,应该就是到达文件尾,就eof()应返回true,但事实上,在读完最后一个数据时,eofbit仍然是false。只有当流再往下读取时,发现文件已经到结尾了,才会将标志eofb原创 2017-08-08 13:46:39 · 620 阅读 · 0 评论 -
对于堆栈的疑问
char a[] = "hello world";是存储在栈上的。char *a = new char[29];是存储在堆上的。定义的数组存储在栈上,指针存储在堆上,疑问待后解。原创 2017-08-16 16:43:54 · 248 阅读 · 0 评论 -
弹出提示对话框
CurveImpAsk askResult = CurveImpAsk::原创 2017-08-16 16:41:47 · 306 阅读 · 0 评论 -
常用控件
1、radio button分组用法将radio1、radio2、radio3分为1组方法:设置 radio1 的 属性: group、tabstop、auto均为true设置 radio2 的 属性: group设为false, tabstop、auto均为true设置 radio3 的 属性:group设为false, tabstop、au原创 2017-08-20 21:24:36 · 222 阅读 · 0 评论 -
拷贝
1、strcpy( char, char );原创 2017-08-22 00:01:41 · 234 阅读 · 0 评论 -
c++内存管理
[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权转载 2017-09-05 16:12:32 · 832 阅读 · 0 评论 -
三千大数阶乘
#include #include #define STRMAX 2000 #define P 100000 #define N 3000 int main() { long t[STRMAX]={0},a,b,c,g=0,x,e,p=P; t[STR转载 2017-09-05 16:40:18 · 735 阅读 · 0 评论 -
读取xml文件
1、根据路径查询结点SelectSingleNode(const CString& path){ CXmlNodePtr nodePtr; if(NULL == m_pXmlDataSouce) return nodePtr; CXmlNode root = m_pXmlDataSouce->GetRoot(); if(root.IsNull()) return node原创 2017-09-06 11:15:01 · 261 阅读 · 0 评论 -
c++容器
1、vector删除vector元素v.erase(m,n);两个vector合并strTotalVec.insert(strTotalVec.end(),strVec.begin(),strVec.end());原创 2017-08-04 11:01:51 · 333 阅读 · 0 评论 -
自绘控件(有疑问)
我们要改变一个编辑框的背景 我们响应WM_CTLCOLOR函数 进行OnCtlColor进行修改但是对与 Button控件就不行了 .. 这时候我们要进行自绘制 相关函数 virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ); 要覆盖掉这个虚函数 并且类型要设置为 BS_OWNERDRAW 这时候转载 2017-09-06 15:28:12 · 273 阅读 · 0 评论 -
c++文件处理
1、文件写入fwrite(const void*buffer,size_t size,size_t count,FILE*stream);FILE *file = fopen(filename,"w");const char * pStr = strA;fwrite(pStr,strA.GetLength(),1,file);fclose(file);原创 2017-09-07 11:47:29 · 337 阅读 · 0 评论 -
c++xml文件
1、CXml * xml = new CXml();xml->Create(_T("Data"), _T("UTF-8"));CXmlNodePtr root = xml->GetRoot(); 根节点CXmlNodePtr nodeDatum = root->NewChild(_T("Vertex")); 创建节点nodeDatum->SetAttribu原创 2017-09-07 12:00:15 · 406 阅读 · 0 评论 -
模板template
模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。 使用模板的目的就是能够让程序员编写与类型无关的代码。 模板是一种对类型进行参数化的工具; 通常有两种形式:函数模板和类模板; 函数模板针对仅参数类型不同的函数; 类模板针对仅数据成员和成员函数类型不同的类。1、函数模板template原创 2017-09-08 16:07:06 · 294 阅读 · 0 评论 -
UNICODE与ANSI的区别【转】
ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种国际标准编码,采用二个字节编码,与ANSI码不兼容。原创 2017-06-17 16:04:51 · 438 阅读 · 0 评论 -
MFC消息机制
Windows程序和MFC程序是靠消息驱动的,他们对于消息的处理本质上是相同的。只是Windows程序对于消息处理的过程十分清晰明了,MFC程序则掩盖了消息处理的过程,以消息映射的方式呈现在开发者面前,使得开发消息的处理十分简单。用多了mfc就想对它的消息映射机制有一个本质的了解,下面将对消息映射做详细的分析。当然,在分析MFC消息映射之前首先对Windows程序的消息处理过程进行一个简单的描述。转载 2017-09-11 10:11:03 · 548 阅读 · 0 评论 -
c++测试代码时间
//测试 计时DWORD dwTickCuunt = GetTickCount();//测试 计时float fTime = (float)(GetTickCount() - dwTickCuunt) / (float)1000;CString szMsg;szMsg.Format(_T("Read map time : %.4f s\n"), fTime);TRA原创 2017-07-31 11:00:07 · 478 阅读 · 0 评论