C++
文章平均质量分 52
力战者
力战者,天酬!
展开
-
C++ 模板初探
模板实例化:模板的声明其实并未给出一个函数或者类的完全定义(definition),只提供了一个函数或类的语法框架模板实例化是指从模板构建出一个真正的函数或类得过程实例化有两种类型:1、显式实例化:代码中明确指定具体类型实例化2、隐式实例化:模板参数推断:模板参数将由被传递的调用参数决定。 在类型推断的时候自动的类型转换是受限制的:如果调用参数是按引用传递的,任何类型转换都不被允许。通过模板...原创 2022-01-14 11:46:51 · 434 阅读 · 0 评论 -
类的静态成员变量为什么不能再h文件类外初始化
//h文件class Image {public: static void AddProtoType(Image* iamge) { Prototype[nsize_++] = iamge; }private: static Image* Prototype[10]; static int nsize_;};int Image::nsize_ = 0;Image* Image::Prototype[];报错如下:原因:静态成员属于整个类,而不属于某个.原创 2022-01-06 10:59:05 · 692 阅读 · 0 评论 -
QT d_ptr 学习
Q_D指针在QT源码中大量的使用,其根本目的在于解决二进制兼容问题。何为二进制兼容?1.动态链接到库的前一个版本的程序继续与库的新版本一起运行而不需要重新编译,则库是二进制兼容的。2.程序需要重新编译以使用新版本的库运行,但不需要任何进一步的修改,则该库是源代码兼容的。让所有的共有类都拥有一个指针,这个指针包含所有数据的私有数据结构。这个指针就是称为d指针的Q_D指针。起源:基类/* DObject 基类 *//*** DObject.h ***/class原创 2021-12-16 23:21:52 · 552 阅读 · 0 评论 -
GDI 绘图
DC(Device Context): 绘图设备HDC: 绘图设备句柄GDI(Microsoft Graphics Device Interface) Win32提供的绘图APIGDI 绘图1、窗口句柄得到设备环境句柄HDC,1、 采用BeginPaint获取HDC PAINTSTRUCT ps;// 保存HDC hdc = ::BeginPaint( hwnd, &ps );/* 此处添加绘图代码*/::EndPaint( hw...原创 2021-12-15 22:35:16 · 1473 阅读 · 0 评论 -
WIN32 代码测试(资源文件)
#include <windows.h>#include <stdio.h>#include "resource.h"#define MAX_LOADSTRING 256WCHAR szTitle[MAX_LOADSTRING] = TEXT("demo");LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);bool InitInstance(HINSTANCE hInstance, int nCmd.原创 2021-12-11 20:59:44 · 351 阅读 · 0 评论 -
devenv 设置 未能完成操作
devenv 解决方案文件.sln /build [ 解决方案配置 ] [ /project 项目名称或文件 [ /projectconfig 名称 ] ]/Build 使用指定的解决方案配置生成解决方案或 项目。例如“Debug”。如果可能存在多个平台, 则配置名称必须用引号括起来 并且包含平台名称。例如“Debug|Win32”。在进行[ 解决方案配置 ] 配置的时候...原创 2021-12-01 10:40:28 · 476 阅读 · 0 评论 -
自定义URL协议在Web中启动本地应用程序
转:通过自定义URL协议在Web中启动本地应用程序_jackychen_king的专栏-CSDN博客_自定义url协议通过自定义URL协议在Web中启动本地应用程序1、注册应用程序来处理自定义协议 你必须添加一个新的key以及相关的value到HKEY_CLASSES_ROOT中,来使应用程序可以处理特殊的URL协议。 新注册的key必须与协议scheme相匹配才可以被添加。例如,增加一个“alert:”协议,被增加到HKEY_CLASSES_ROOT的key必须是alerhttps://b...原创 2021-11-08 18:23:26 · 610 阅读 · 0 评论 -
偶遇的面试题
1.free()函数入参是一个void*指针,它是如何知道被指向的大小的?举个例子:假设你用malloc需要申请100字节,实际是申请了104个字节。把前4字节存成该块内存的实际大小,并把前4字节后的地址返回给你。 free释放的时候会根据传入的地址向前偏移4个字节 从这4字节获取具体的内存块大小并释放。2、c/c++程序如何控制执行到某个特定内存地址?如果想让程序跳转到绝对地址0x100000处执行,可以把绝对地址0x100000强制转换成函数指针,然后再用函数指针的方式调用函数就可以了。.原创 2021-10-20 11:33:05 · 370 阅读 · 0 评论 -
智能之针综述(1)
在冯诺依曼的体系结构中,一个进程必须有:代码段,堆栈段,数据段。在C++中,堆区动态内存的管理是用两对对运算符完成的:new和delete/malloc和free,new/malloc:在动态内存中为对象分配一块空间并返回一个指向该对象的指针,delete/free:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。动态内存管理经常会出现两种问题:一种是忘记释放内...原创 2021-10-18 16:08:24 · 84 阅读 · 0 评论 -
mac. xcode. messagebox
某些情况下使用messagebox 阻塞程序,进而附加进程调试是比较舒服的。mac 无法使用 <windows.h>,因此无法使用windows 下的messagebox,因此采用cocoa的能力封装messagebox来满足自己的需要//messagebox.h#ifndef CEF_MESSAGE_BOX_H_#define CEF_MESSAGE_BOX_H_#include <string>#pragma oncenamespace client {原创 2021-07-05 16:59:59 · 362 阅读 · 2 评论 -
编译libcurl+ openssl
1、安装ActivePerl 地址:https://platform.activestate.com/featured-projects 1、注册账号从featured-projects下载完整安装包,非完整版会报错2、zlib编译 目录:zlib\contrib\vstudio\vc14 编译所需版本3、OpenSSL: 从 github 上 clone 来的 master 分支,switch 到...原创 2021-04-14 18:35:57 · 396 阅读 · 0 评论 -
进程间通信(IPC)
概述进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。此外,还有双方都可以访问的外设。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。进程间通信(IPC,InterP原创 2021-01-28 18:20:51 · 165 阅读 · 0 评论 -
线程同步
信号量用主要用于线程同步的,意思就是线程通信的。C++11的新特性中,没有关于semaphore信号量相关的封装,我们可以利用互斥量和条件变量来进行信号量的封装。#include <mutex>#include <condition_variable>class CSemaphore{public: CSemaphore(long count); ~CSemaphore(); void signal(); void wait();private: ...原创 2021-01-28 16:37:55 · 218 阅读 · 0 评论 -
进程线程相关面试知识
进程1、定义:标准定义:进程是一个具有一定独立功能的程序在一个数据集合上依次动态执行的过程。进程是一个正在执行程序的实例,包括程序计数器、寄存器和程序变量的当前值。简单来说进程就是一个程序的执行流程,内部保存程序运行所需的资源。2、操作系统如何进行进程管理?这里就不得不提到一个数据结构:进程控制块(PCB),操作系统为每个进程都维护一个PCB,用来保存与该进程有关的各种状态信息。进程可以抽象理解为就是一个PCB,PCB是进程存在的唯一标志,操作系统用PCB来描述进程的基本情况以及运行.原创 2021-01-27 20:28:02 · 121 阅读 · 0 评论 -
C++ async
C++98 标准中并没有线程库的存在,直到 C++11 中才终于提供了多线程的标准库,提供了管理线程、保护共享数据、线程间同步操作、原子操作等类。多线程库对应的头文件是 #include <thread> ,类名为 std::thread 。int testFun(int numb){ cout << "function is runing" << endl; cout << "this thread ID:"<<std::this_t原创 2021-01-27 18:53:20 · 1562 阅读 · 0 评论 -
绕懵逼之同步/异步 阻塞/非阻塞
被面试官绕蒙蔽了,特此整理总结一下1概念解析1.1 同步与异步概念描述同步异步概念与消息的通知机制有关。所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的.原创 2021-01-27 16:54:30 · 91 阅读 · 0 评论 -
max不是std成员
添加头文件 #include <algorithm> 即可原创 2021-01-12 16:15:58 · 493 阅读 · 0 评论