
C++
leyou2018
努力成为编程高手。
展开
-
C++常用总结
常用算法计算冒泡排序计算冒泡排序#include <iostream>using namespace std;void bubbleSort(int *pData, int count ){ int tmp = 0; for (int i = 0; i < count; i++){ for (int j = count - 1; j > i; j--){ if (pData[j] > pData[j - 1]) { tmp = pData原创 2020-07-15 10:31:21 · 313 阅读 · 0 评论 -
SendMessage,PostMessage如何发消息
发消息#define USERMSG WM_USER+1CString strContent=_T("我爱编程"); ::PostMessage(m_pParentWnd, USERMSG, (WPARAM)strContent.AllocSysString(), nType);收消息LRESULT CDlgMain::HandleMess原创 2017-02-10 16:10:53 · 813 阅读 · 0 评论 -
C++ const成员函数
1、const成员函数不能改变成员变量的值 2、const成员函数不能被非Const成员函数所调用。原创 2017-04-03 18:12:08 · 280 阅读 · 0 评论 -
C++中的重载、隐藏和重写
1、重载(overload) 同一个类里面,函数名和返回值类型相同,函数的参数类型或参数的个数不同。class A{public: void test(int i); void test(double i); void test(int i,double i); int test(int i)//错误,不构成重载};2、隐藏 只要派生类的函数和基类的函数重名原创 2017-04-03 17:55:56 · 535 阅读 · 0 评论 -
c++中的继承
声明:本博的图片均截图自慕课网手机客户端,图片的版权归慕课网所有。1、三种继承公有继承 保护继承 私有继承 2、继承中的隐藏隐藏的定义 访问父类中隐藏的数据成员 访问父类中隐藏的成员函数 3、多重继承与多继承多重继承 多继承 4、避免菱形继承多余的系统开销解决方法是在菱形继承中使用虚继承,以上图为例,操作方法是类B和类C虚继承类A。class B virtual public : A{pu原创 2017-03-28 23:02:29 · 311 阅读 · 0 评论 -
C++编码风格与规范
命名约定一般命名原则命名应该含义明确,不要为了节省空间使用缩写。int n; // Bad - 无明确含义的单字母名称string cstmrName; // Bad - 非约定俗成的缩写int width, height; // OK - 含义明确int numColors; // OK - num属于约定俗成的缩写for (int i = 0; i < 100; ++i) // OK -原创 2017-04-19 11:55:43 · 3919 阅读 · 0 评论 -
如何选用 vector 和 list
list 擅长 插入和删除vector擅长 随机访问、尾端插入、尾端删除原创 2017-04-26 17:00:02 · 688 阅读 · 0 评论 -
C++中的foreach用法
在c++中,一般人只知道foreach分开写为“for each”时的用法,却不知道“foreach”的用法。不多说,直接上代码。QStringList listTemp; QString strTemp1; QString strTemp2; tempList.append("aaa"); tempList.append("bbb"); tempList.ap原创 2017-01-18 16:56:20 · 90207 阅读 · 12 评论 -
一个小技巧优化C++编译速度
如果有一个类A需要把其他类的对象声明为对象成员,它就需要包含其他类的头文件。如果类A包含的其他类的头文件过多,就会影响编译速度。 C++为此提供了专门的机制–前置声明法用来解决这个问题。 使用前置声明法的要点有:把需要引进的类的头文件包含在本类的.cpp文件中 2.在本类的.h文件中 用“class + 类名”的形式进行前置声明。类名为需要引进的类的名字。原创 2017-01-11 15:57:33 · 3248 阅读 · 0 评论 -
C++ 普通宏函数与前置处理宏 使用示例
#include "stdafx.h"typedef struct point3d{ float x; float y; float z;}Point3d;//宏函数#define X(p,xValue)(p.x)=xValue;//前置处理宏#define Point3d_print(pd) \ printf("(%f,%f,%f)", pd.x...原创 2018-02-25 09:31:08 · 1505 阅读 · 0 评论 -
C++创建一个抽象数据类型
功能包含:默认初始化,元素赋值,整体赋值,数据读写,加减运算。#include "stdafx.h"#include <iostream>using namespace std;class Point3d{public: Point3d(float x = 0.0, float y = 0.0, float z = 0.0) :_x(x), _y...原创 2018-02-25 10:49:13 · 2296 阅读 · 0 评论 -
插秧排序法:以 QVector 为例
简述比冒泡排序法更高效的排序方法,如果数组有 N 个元素,只需要将移动 N - 1 次元素,即可完成完全排序。简述原理代码原理该过程类似于插秧,原始数据好比秧苗,按原始秧苗按固有顺序依次取出。插第一株秧苗,毫无疑问,可以直接栽在地理,第二柱秧苗与第一株秧苗比较,若较大则栽在第一株前面,反之栽在其后。对于所有秧苗来说,它只需要栽在它比之大的那个秧苗前面,若已经存在的秧...原创 2018-06-25 21:37:00 · 1357 阅读 · 0 评论 -
Windows系统获取屏幕宽度和高度
int cx = GetSystemMetrics(SM_CXFULLSCREEN);int cy = GetSystemMetrics(SM_CYFULLSCREEN);原创 2017-03-21 16:12:42 · 2808 阅读 · 0 评论 -
VS如何正确地加载库
如果运行从其他电脑迁移过来的项目时,出现无法打开xxx.lib,或无法打开xxx.dll的话。要么是.lib或.dll没有正常生成。此时应该检查该库的源码。如果是正常生成了,但没有找到的话,那是因为编译器没有找到库所在的路径。添加库文件: 在VS中右击项目点属性:添加头文件目录: 配置属性–>C/C++–>常规–>附加包含目录 加上头文件存放的目录。 添加lib文件: 配置属性原创 2017-03-11 16:10:54 · 2213 阅读 · 0 评论 -
编译你自己的调试代码
以vs2013为例,有时候为了编译一些调试代码,但并不希望这些代码在Release时被编译运行。其实C++提供了这样的机制,那就是条件编译。 我们可以这样做: 如上图所示,在Realease模式下,编译器自动为我们编译了“NDEBUG”宏,这个宏在Release模式下是默认被define过的。好,根据这一点,我们就可以做手脚了,上代码:#ifndef NDEBUGint a = 1;int原创 2017-03-10 10:38:08 · 292 阅读 · 0 评论 -
C++手动条件编译
比如说一个程序既要本地调试,又要线上调试,不同的调试环境需要编译不同的常量。固然可以每次都手动修改,但是比较麻烦。这时就用到了手动条件编译。翠花,上代码://本地调试时将此行解除注释即可// #define LocalDefine 0x66666; #ifndef LocalDefine#define LOGIN_HOST "login.xxxx.com"#define LOGIN_P原创 2017-02-08 10:25:12 · 844 阅读 · 0 评论 -
C++的高级特性
本文介绍以下内容:如何创建动态数组,如何使用向量,如何使用迭代器,define如何定义函数,函数如何返回复杂类型,STL中的快速排序。动态数组int n;n=10;//此处可以把用户从界面上输入的值赋值给n。int *p=int a[n];//给数组赋值for(int i=0;i<n;i++){ a[i]=i;}//打印数组for(int i=0;i<n;i++){原创 2017-02-25 19:08:48 · 3339 阅读 · 2 评论 -
错误 1 error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?
问题如下解决步骤: 1、右键点击该文件 2、选择“属性”,弹出如下界面 3、按照上图箭头所示的顺序,依次选择“C/C++”—-“预编译头”—-“不使用预编译头” 4、最后点右下角的“应用”。搞定,手工!原创 2017-02-12 14:19:42 · 12481 阅读 · 0 评论 -
C++实现Json解析详细教程
在GitHub官网上下载源码https://github.com/open-source-parsers/jsoncpp/用cmake-gui生成.sln解决方案,cmake-gui使用教程请参考我以前的博客http://blog.youkuaiyun.com/qq_35488967/article/details/56480053将json-cpp工程的include下的json文件夹拷贝到你自己的工程的原创 2017-02-23 11:12:38 · 16941 阅读 · 0 评论 -
C++打开网页,发起QQ对话,调用外部exe程序
用默认浏览器打开一个网页 ShellExecute(NULL, _T(“open”), _T(“http://my.youkuaiyun.com/my/mycsdn“), NULL, NULL, SW_SHOW);发起QQ聊天 ShellExecute(NULL, _T(“open”), _T(“tencent://message/?uin=要发起链接的QQ号”), NULL, NULL, SW_SHOW原创 2017-02-15 09:22:21 · 2158 阅读 · 0 评论 -
让你的win32程序发出声音
#include <mmsystem.h>PlaySound(TEXT("tip.wav"), NULL, SND_FILENAME);其中,”tip.wav”是声音文件的名称。将其放到执行程序同目录下即可。也就是说与.exe程序在同一目录下。原创 2017-02-23 15:56:45 · 1745 阅读 · 0 评论 -
C++ 时间戳转本地时间 函数
时间戳转本地时间在网上找了一上午,中午研究出来一个,同时进行了一些改进。.h文件//时间戳转本地时间。returnType=0,返回年月日时分秒,returnType=1,返回年月日,returnType=2,返回时分秒。time_t 单位是秒。std::string TimestampToTimeString(time_t t, int nType=0);.cpp文件//时间戳转本地时间。retu原创 2017-02-03 15:54:48 · 3024 阅读 · 0 评论 -
C++编程模式1--观察者模式
观察者模式用于实现以下功能,有一个观察者类用以发布信息,其他类继承这个观察者类,只订阅自己想要操作的信息。本例中,GateService.h,GateSevice.cpp文件用以实现观察者类。DlgLogin.h,DlgLogin.cpp文件用以实现订阅信息的类。具体实现如下://GateService.h 文件#pragma onceclass IGateServerRpc{public:原创 2017-02-14 12:35:09 · 351 阅读 · 0 评论 -
C++编程模式2--策略模式
使用策略的类(CUseStrategy) 抽象策略类(CAbsStrategy)策略类1(CStrategy1) 策略类2(CStrategy2) 策略类3(CStrategy3) 。。。 这些类之间的关系是: 1、所有的策略类由(使用策略的类UseStrategy)调用。 2、所有的策略类继承自(抽象策略类AbsStrategy)。 3、抽象策略类的对象,作为使用策略类的对象成员。原创 2017-02-27 18:00:44 · 368 阅读 · 0 评论 -
C++中的struct也能定义类!!!
本博参考了以下博客:http://www.cnblogs.com/ccsccs/articles/4025215.html 一、struct 新功能介绍 1、stuct用构造函数赋值struct A{ int a; int b; A() //构造函数 { a=0; b=0; }}2、struct可以实现封装、继承,原创 2017-03-10 11:43:48 · 3846 阅读 · 0 评论 -
友元探秘
关于友元,我也忘了在哪儿看过一句话了,大意是说:如果设计良好的类,其实是不需要用到友元的。真是存在这样的偏见,让我几年来,看到友元相关的内容就直接跳过。 但是,最近在学习封装自己的容器和迭代器,让我觉得上面那句话所说的未免偏颇。 至此,将友元的内容整理后分享在此,希望大家与我交流。 一、友元函数void operateNumber(int& num){ num+=1;}class原创 2017-03-10 14:44:31 · 259 阅读 · 0 评论 -
vs2013下怎么设置条件编译
当我们的C++项目需要用到不同的库时,我们自然需要在debug和release下分别加载这个库的debug版和release版。 这在vs2013中设置起来非常方便,vs的其他版本设置类似。 步骤如下: 1、右键点击项目,点击下图中的“属性” 2、依次点击下图中的“配置属性” –> “C/C++” –> “预处理器”。 在右面编辑区可看到“预处理器定义”,其中有个“_DEBUG”就原创 2016-12-22 11:14:12 · 6365 阅读 · 0 评论