C++
胡撸娃哈哈
码来!
展开
-
QLayoutItem指针double free
QLayoutItem指针析构原创 2022-09-23 15:22:42 · 227 阅读 · 1 评论 -
OpenSSL SM4加密 CMake工程链接失败
C++ SM4 国密原创 2022-08-17 21:39:04 · 889 阅读 · 0 评论 -
Qt utc时间字符串转为本地时间
utc时间字符串转为本地时间原创 2022-08-10 17:09:20 · 931 阅读 · 0 评论 -
Qt如何优雅的处理悬空指针- QPointer
Qt如何处理悬空指针- QPointer在日常搬砖工作中,可能会遇到这样的情况:class Test{public: void setPtr(QObject *ptr){m_ptr = ptr;} bool isPtrValid(){return m_ptr != nullptr;}private: QObject *m_ptr;}int main(int argc,char **argv){ QObject *obj = new QObject(); Test test; tes原创 2021-06-03 19:51:50 · 1226 阅读 · 0 评论 -
QTimer timeout之后函数是异步执行还是同步执行
写一个简单的demo做个实验:#include "widget.h"#include "ui_widget.h"#include <QTimer>#include <QThread>#include <iostream>using namespace std;Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupU原创 2021-05-24 19:47:21 · 815 阅读 · 0 评论 -
C++ condition variable中notify_all()如何保证数据同步
先上代码:// condition_variable example#include <iostream> // std::cout#include <thread> // std::thread#include <mutex> // std::mutex, std::unique_lock#include <condition_variable> // std::conditio原创 2021-03-23 15:47:08 · 842 阅读 · 0 评论 -
C++中mutable关键字作用
mutable,顾名思义表示变量是可变的,与const唱对台戏。不结合实际情况根本让人搞不明白它的意义在哪里,下面结合实例说一下。假设我们要封装一个多线程下安全使用的vector,大概如下#include <vector>#include <mutex>template<class T>class ConcurrentVecor{public: //省略其他代码 bool isEmpty() const{ std::lock_guard<std原创 2021-03-22 18:22:28 · 647 阅读 · 0 评论 -
关于std::async如何传递引用的问题
在了解std::async()时写了一下测试代码,网上的测试代码参数一般都是基础类型值传递,但是我想看下vector并发的情况,代码如下:int doSomething(char c, ConcurrentVector<char>& vec, int* aomic){ default_random_engine dre(c); uniform_int_distribution<int> id(1,10); for(int i = 0; i <原创 2021-03-17 09:38:37 · 1037 阅读 · 0 评论 -
C++STL remove_if函数为什么先用一个find_if
先贴代码:template <class _ForwardIterator, class _Predicate>_LIBCPP_NODISCARD_EXT _LIBCPP_CONSTEXPR_AFTER_CXX17 _ForwardIteratorremove_if(_ForwardIterator __first, _ForwardIterator __last, _Predicate __pred){ __first = _VSTD::find_if<_Forward原创 2021-03-14 19:34:25 · 167 阅读 · 0 评论 -
C++类operator () 重载和函数对象
最近翻阅C++标准库的学习文档,看到有这样一个用法:class CPrintInt{ public: void operator() (const int& elem){ cout<< elem << endl; }};int main(int argc, char const *argv[]){ vector<int> coll; for(int i = 1; i <= 9; ++i){原创 2021-03-12 11:48:41 · 944 阅读 · 0 评论 -
C++单例类实现宏定义
项目中单例类很多的话,每个都要声明代码回比较累赘,所以写了一个宏定义简介使用:宏定义如下:#define DECLARE_SINGTON(ClassName)\private:\ ClassName(){};\ ~ClassName(){};\ ClassName(const ClassName&);\ ClassName& operator=(const ClassName&);\ static ClassName* m_pInstan原创 2021-03-05 14:26:38 · 618 阅读 · 0 评论 -
C++ 基础类型转换(string, wstring,int, hex)
在项目中经常会用到类型间的相互转换,一段时间不用又会忘记,现记录一下方便后面查找。有需要的童鞋拿走不谢,哇哈哈哈....1、string转wstringstd::wstring s2ws(const std::string& s) { setlocale(LC_ALL, "chs"); size_t _dsize = s.size() + 1; wchar...原创 2019-03-29 17:54:28 · 2639 阅读 · 0 评论 -
C++ 类拷贝构造函数和赋值运算符 & 禁止类的拷贝
1、通常我们定义一个类时,不显示的定义类的拷贝构造函数和拷贝赋值运算符时,编译器会生成两个默认的函数:class Foo{ Foo(const Foo&);//1 Foo& operator=(const Foo&)//2};1是拷贝构造函数,2是拷贝赋值运算符。Foo类可以做如下操作:Foo f1;Foo f2(f1);Foo f2 ...原创 2019-03-30 09:40:48 · 869 阅读 · 0 评论 -
typename用法
转自百度百科class关键字的同义词这是一项C++编程语言的泛型编程(或模板编程)的功能,typename关键字用于引入一个模板参数,例如:// 定义一个返回参数中较大者的通用函数template <typename T>const T& max(const T& x, const T& y){ return x > y ? x :...转载 2019-03-30 10:19:57 · 1010 阅读 · 0 评论 -
C++ 单例模式的模板类 - 懒汉类型
1、简单的单例模式类class singleton{private: singleton(); ~singleton(); singleton(const singleton&); singleton& operator=(const singleton&);public: static singleton* GetIns...原创 2019-03-30 15:21:04 · 495 阅读 · 0 评论 -
C++ 11 互斥体在函数体内的lock和unlock
话不多少,先上代码:template<class _Mutex>class LockGuard {public: explicit LockGuard(_Mutex& _Mtx) : _MyMutex(_Mtx) { // construct and lock _MyMutex.lock(); } ...原创 2019-03-30 16:25:17 · 1006 阅读 · 0 评论 -
一个C++实用的buffer类
/** @brief Safely Buffer*/class Buffer {public: Buffer() : _data(nullptr), _size(0) { } Buffer(const byte* data, size_t size) : _data(nullptr), _size(0) { ...原创 2019-04-02 20:37:36 · 3737 阅读 · 1 评论 -
简述C++中static的几种用法
1、修饰局部变量,只执行一次初始化,延长了局部变量的生命周期,在程序结束的时候才释放。2、修饰全局变量,此变量只能在当前的文件中访问,其它文件不可访问,即使是extern也不行。(建议使用隐式命名空间)3、修饰普通函数(非成员函数),只能在当前文件中访问,不可在其它文件中调用。4、修饰成员变量,类的所有实体对象共享这个变量。5、修饰成员函数,在该函数中只能调用静态变量和静态函数。...原创 2019-04-09 22:42:50 · 453 阅读 · 0 评论 -
C++线程类封装实例
先上代码:class Thread : NoCopy{ Thread():_quit(false), _isRunning(false){} vartual ~Thread(){} int start(bool isJoin = false){ //默认是detach模式 if(_isRunning){ return -...原创 2019-05-05 10:30:05 · 629 阅读 · 0 评论 -
C++的四种强制转换
转自:https://www.cnblogs.com/cauchy007/p/4968707.htmlC++即支持C风格的类型转换,又有自己风格的类型转换。C风格的转换格式很简单,但是有不少缺点的: 1.转换太过随意,可以在任意类型之间转换。你可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成一个派生类对象的指针,这些转换之间的差距是非常巨...转载 2019-03-06 22:28:52 · 341 阅读 · 0 评论