C++
文章平均质量分 71
学习记录
古路
这个作者很懒,什么都没留下…
展开
-
C++回调函数理解
看了一些介绍感觉太官方了,我的简单理解就是从模式设计思想出发,回调函数的目的就是为了将变化的模块抽离出来,延迟实现;这里还有一种方法可以避免这样的问题,可以把非static的回调函数 包装为另一个static函数,这种方式也是一种应用比较广的方法。但这种实现有一个很明显的缺点:static 函数不能访问非static 成员变量或函数,会严重限制回调函数可以实现的功能。简而言之,std::funtion是定义函数类型(输入、输出),std::bind是绑定特定的函数(具体的要调用的函数)。原创 2023-05-27 00:01:39 · 984 阅读 · 0 评论 -
c++11并发与多线程
c++11并发与多线程0.引言一.基本概念和实现1.1.并发、进程、线程的基本概念1.1.1 并发1.1.2 可执行程序1.1.3 进程1.1.4 线程1.1.5 学习心得1.2.并发的实现方法1.2.1 多进程并发1.2.2 多线程并发1.2.3.总结1.3.C++11新标准线程库二.线程启动、结束,创建线程多法、join,detach2.1.范例演示线程运行的开始2.2.其他创建线程的方法三.线程传参详解,detach()大坑,成员函数做线程函数3.1.传递临时对象作为线程参数3.2.临时对象作为线程.原创 2022-05-07 10:54:05 · 1297 阅读 · 0 评论 -
template模板复习
template模板复习0.引言1.包展开2.(C++17) 折叠表达式3.完美转发4.变量模板0.引言参考链接type ... pack-name(optional) (1) typename|class ... pack-name(optional) (2) type-constraint ... pack-name(optional) (3) (since C++20)template < parameter-list > class ... pack-name(opti原创 2021-12-21 15:57:42 · 439 阅读 · 0 评论 -
类的继承与多态复习
类的继承与多态复习1.通过类的继承(派生)来引入 ==是一个== 的关系2.类的派生会形成嵌套域3.类的继承——虚函数3.1. 通过虚函数与引用(指针)实现动态绑定3.2.虚函数在基类中的定义3.3.虚函数在派生类中的重写( override )3.4.由虚函数所引入的动态绑定属于运行期行为,与编译期行为有所区别4.类的继承——继承与特殊成员函数5.类的继承—补充知识2.5.1.public 与 private 继承([参考资料](https://www.programiz.com/cpp-programm原创 2021-12-21 11:00:17 · 221 阅读 · 1 评论 -
运算符重载复习
运算符重载0.引言1.使用 operator 关键字引入重载函数2.[根据重载特性,可以将运算符进一步划分](https://zh.cppreference.com/w/cpp/language/operators)3.运算符重载0.引言1.使用 operator 关键字引入重载函数函数参数个数与运算操作数个数相同,至少一个为类类型(不能全部都是内建类型)#include<iostream>#include<vector>#include<string>原创 2021-12-20 20:52:03 · 248 阅读 · 0 评论 -
类的六大函数复习
类的六大函数复习0.引言1.构造函数2.拷贝构造函数3.移动构造函数4.拷贝赋值函数( operator = )5.移动赋值函数 ( operator = )6.析构函数7.总结0.引言1.构造函数普通构造函数:略。代理构造函数#include<iostream>#include<vector>class Str{public: Str()//隐式的返回类型,就是类本身 { std::cout<< "constructer is c原创 2021-12-20 19:47:44 · 998 阅读 · 0 评论 -
左值引用、右值引用及移动语义
左值引用、右值引用及移动语义0.什么是左值和右值?1.左值引用『&』2.右值引用『&&』3.移动语义-移动构造函数和移动赋值运算符4.std::move() / forward()5.右值引用与模板函数6.移动构造和移动赋值0.什么是左值和右值?左值是变量的地址,如变量名或指针。右值则是变量存储的内容。int a=3; // a变量名,3是变量a存储的内容当一个对象被用作左值的时候,用的是对象的身份,也就是在内存中的位置。而当对象被用作右值的时候,用的则是对象的值。左值是持久原创 2021-07-06 12:58:39 · 570 阅读 · 1 评论 -
the default constructor of “**“ cannot be referenced -- it is a deleted function
the default constructor of "**" cannot be referenced -- it is a deleted function0.引言1.参考0.引言如果报错指向的是复杂数据类型。则一般是复杂数据类型的构造函数无法构造所导致。1.参考以我自己遇到的错误为例,'unordered_set’存储的数据过于复杂,无法构造,手动实现即可。参考连接:ref01ref02...原创 2021-11-11 18:07:29 · 2336 阅读 · 0 评论 -
类的静态成员变量
类的静态成员变量coding时遇到一个需求,抽象出来大概意思就是:A类的一个静态成员变量,需要在B类里面赋值,然后在C类里面使用。知识点:类的静态成员变量需要在全局域进行申明,可以将声明和赋值放一起,也可以分开。#include<iostream>class A{public: static double DistanceTh_ ;};double A::DistanceTh_ ;class B{public: B();}; B::B(){原创 2021-10-25 10:45:43 · 293 阅读 · 0 评论 -
VS2017静态编译exe可执行文件,在其他其他环境运行
VS2017静态编译exe可执行文件,在其他其他环境运行0.引言1.IDE设置0.引言1.IDE设置1.项目->属性->常规->MFC的使用:在静态库中使用MFC2.项目->属性->C/C++>代码生成->运行库:选择 多线程调试(/MTd)编译时,选择release,同时把exe和相关的dll文件打包就OK.ref...原创 2019-09-20 14:05:15 · 624 阅读 · 0 评论 -
WIN10环境配置
WIN10环境配置0.引言1.VS20172.OpeCV4103.Qt0.引言1.VS2017Install refvs2017中文注释红色波浪下划线去除ref无法查找或打开 PDB 文件.ref1.单机菜单栏调试–选项.2.调试–常规:勾选启用源服务器支持.3.调试–符号:勾选微软符号服务器 .4.或:调试–开始执行,不选择本地windows调试器.2.OpeCV41...原创 2019-09-20 09:37:07 · 674 阅读 · 0 评论 -
类内线程及类内函数做线程启动函数
类内线程及类内函数做线程启动函数0.引言1.内类开线程2.类内函数做线程启动函数3.std::this_thread::yield 与std::this_thread::sleep_for0.引言多线程参考:ref1.ref2.线程的启动函数:1.普通的函数2.函数对象3.class中的static函数4.lammda表达式类内成员函数不能作为线程的启动函数.解决:...原创 2019-09-19 23:11:01 · 852 阅读 · 0 评论 -
类的static成员
类的static成员0.引言1.静态(static)成员概述2,静态数据成员2.1 定义方式2.2 const static数据成员3,静态成员函数4,类中的关键字出现位置总结0.引言1.静态(static)成员概述静态成员:不是任意对象的组成部分,但由给定类的全体对象所共享的数据成员或函数成员。静态成员是与类关联的对象,而不是像普通的成员那样与类的对象相关联。静态成员可以是数据成员...原创 2019-09-19 15:27:31 · 2327 阅读 · 0 评论