C++
WJsuperrunner
学无止境
展开
-
拷贝赋值运算符和拷贝构造函数的区别
拷贝构造函数和赋值运算符的行为比较相似,都是将一个对象的值复制给另一个对象,但是其结果却有些不同,拷贝构造函数使用传入对象的值生成一个新的对象的实例,而赋值运算符是将对象的值复制给一个已经存在的实例。这种区别从两者的名字也能轻易的分辨出来,拷贝构造函数也是一种构造函数,那么它的功能就是创建一个新的对象实例;赋值运算符是执行某种运算,将一个对象的值复制给另一个对象(已经存在的)。调用的是拷贝构造函数还是赋值运算符,主要是看是否有新的对象实例产生,如果产生了新的对象实例,那调用的就是拷贝构造函数;如果没有,那原创 2021-02-19 12:50:06 · 1454 阅读 · 0 评论 -
std::shared_ptr及std::unique_ptr使用数组注意事项
默认情况下,std::shared_ptr会调用delete来清空内存。当使用new[] 分配内存时,需要调用delete[] 来释放内存,否则会有内存泄露。可以通过以下代码来自定义释放内存的函数: template< typename T > struct array_deleter { void operator ()(T const * p) { delete[] p; }};通过以下代码来声明std::shared_ptr指针:原创 2020-06-18 20:00:25 · 8399 阅读 · 1 评论 -
如何实现DLL延迟加载
1.不建议采用将DLL拷贝到工程目录下的方式开发2.设置流程:a) 卸载延迟加载的DLL(Yes);b) 延迟加载的DLL:填入要加载的DLL全名以‘;‘间隔;c) 调试->环境: 填入DL路径(推荐相对路径)以‘;‘间隔,如:path=../../../DllPath1/bin;../../../DllPath2/x64/bin;$(PATH)Demo:#include "stdafx.h"#include "windows.h"int main(){ HMODULE hL原创 2020-06-01 15:32:05 · 688 阅读 · 0 评论 -
QT char*,char[],QString,string互相转换
char*,char[],QString,string互相转换比较杂,本文参考现有博文做了总结。1.char* 转QString方法一:直接用QString的构造函数转换,如下:char* ch = "acuity";QString str(ch);方法二:用QString的静态转换函数获取,如fromUtf8()、fromLocal8bit()、fromUtf16(),如下:cha...转载 2020-01-12 22:36:12 · 12371 阅读 · 0 评论