C++ 基础
文章平均质量分 60
逗神大人
C++程序员,也会点Java,Kotlin, Swift,Python,Golang, C#, 但技术相对比较菜,用到啥就学啥,用不上的一会就忘了
展开
-
std::array使用笔记
`std::array`是`C++`标准库提供的一个封装原生定长数组的模板类原创 2022-12-10 10:46:32 · 1709 阅读 · 1 评论 -
C++高级编程: 可调用对象
所谓对象,就是在内存中存在的具体实例。那可调用对象,就是可以像函数一样调用的对象。首先仿函数是一个自定义的class实例, 然后这个实例可以指定参数调用自己,实现像函数一样的行为。原创 2022-09-13 20:13:58 · 896 阅读 · 0 评论 -
C++ 字符串std::string的使用规范
C++ 字符串std::string的使用规范原创 2022-06-08 17:01:08 · 1067 阅读 · 0 评论 -
C++11 异步编程std::future, std::promise, std::pakaged_task以及std::async
C++11 已经为我们提供了std::thread如此方便的多线程API,为啥还要“多此一举”地提供一大堆异步编程库呢? 哈哈, 其实制定C++11 规范的那些神人们考虑的比我们有远见多了 你想啊, 如果我们平时使用std::thread来进行异步调用的时候,需要获取异步调用的结果,那该怎么办呢? 如果使用全局加锁变量, 那我们有从何得知线程是否完成呢? 这就需要使用到我们的C++11神器s原创 2018-01-03 10:52:21 · 1112 阅读 · 0 评论 -
C/C++中整数类型隐式转换
常规同字节大小的整形转换同字节大小的整数类型,有符号可以隐式转换为无符号,反之则不行(有警告)#mermaid-svg-kWXXEkGDW25f6EtL {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kWXXEkGDW25f6EtL .error-icon{fill:#552222;}#mermaid-svg-kWXXEkGDW25f6EtL .error-text{原创 2022-05-19 12:12:54 · 3710 阅读 · 0 评论 -
C/C++不同类型指针转换方式总结
文章目录问题背景使用C风格转换(C++中不建议甚至禁止使用)联合体(union)以下仅适用于C++使用`reinterpret_cast`借助`void *`使用`static_cast`总结问题背景在很多场合下,我们会经常需要使用一个普通结构体指针转换成uint8指针或者其他指针,这样可以将内存地址所对应的内存块以另一种含义来解释为此特总结出几种常见的转换方法使用C风格转换(C++中不建议甚至禁止使用)uint8_t *data = (uint8_t *)&some_obj;联合体(原创 2021-12-20 10:35:22 · 3403 阅读 · 0 评论 -
C++参数类型的合理选用
针对不同场景,合理的选择最适合的参数类型,大大提高程序的运行效率原创 2021-09-18 00:21:19 · 1083 阅读 · 0 评论 -
C++笔记: 模拟实现C++11的智能指针
Shared Pointer#include <cstdint>#include <iostream>struct RefCount { std::size_t ref; std::size_t weak; RefCount(): ref(1), weak(0) {}};template <typename T>struct Ref: RefCount { T data; Ref(T d): RefCount(原创 2021-01-29 18:18:44 · 160 阅读 · 2 评论 -
C++17 新功能介绍
C++17 新功能介绍std::any说明用来包裹任何类型的容器, 行为类似于void *, 但更安全, 有专门的类型转换api,转换的类型不匹配时会有转换异常抛出头文件 <any>示例代码std::any any = 0; // any = int(0)std::cout << std::any_cast<int>(any) ...原创 2020-04-22 20:02:57 · 443 阅读 · 0 评论 -
C++ 11 函数参数类型传递分析与总结
C++ 11 函数参数类型传递分析与总结C++自古以来, 针对函数参数类型的传递一直都有一些约定俗成的规定, 比如:针对原始数据类型,直接使用传值形式传参void test(int number);void test(bool enable);void test(double percent);而针对结构体以及类, 通常都是:如果无需改变参数的值, 使用常量引用或者常量指针如果...原创 2019-06-18 10:47:30 · 2068 阅读 · 0 评论 -
C++编程技巧之属性的使用
文章目录引入原理实践源码Repo引入作为一个喜欢偷懒的码农, 在开发C++的过程中经常遇到类属性的明明问题头疼 &amp;gt;_&amp;lt;既然是属性, 那常用的接口无非就是设置属性, 获取属性, 监听属性变化以及限定属性的合法值范围平常开发的时候, 基本都是一股脑的按流程走, 如:定义私有成员变量定义属性get方法定义属性set方法在set方法里里面去检验新值是否合法, 以及是否有变化等...原创 2019-02-15 12:24:33 · 551 阅读 · 0 评论 -
C++模板个人工具库(没有三方依赖, 纯头文件) : oyoungs/dispatch
C++模板库oyoungs/dispatch介绍这是个人开发维护的一个工具性质的纯头文件的C++库内容包括dispatch.hpp 同步/异步调度任务队列, async和sync 事件循环event_loop, 事件触发器events/emitter 串行链式调用的promise工具net.hpp 网络相关, 目前实现的有TCPClient TCPSer...原创 2018-11-07 18:19:39 · 399 阅读 · 0 评论 -
使用WSL+VSCode快速C++入门
使用WSL+VSCode快速C++入门0. 准备工作0) 系统要求 Windows 10 1803以上1) 安装WSL(Windows Subsystem Linux)2) 安装VSCode3) 将VSCode默认的终端配置为WSL的bash终端4) 在终端中安装构建工具1. 第一个源文件1) 基本代码2) 第一行代码 Hello, C++3) 我要开始做加减乘除啦4) 还有那些类型的数据都一块说...原创 2018-11-06 17:55:23 · 9130 阅读 · 5 评论 -
针对第三方SDK中不恰当的char *类型的几点看法
很多时候,会遇到第三方接口中本来需要使用const char *类型参数的时候,却使用了char *类型,以至于我们原本可以使用如someFunction(“some”), 却编译报错(如某康的SDK)针对以上的这种问题,我们可以在对第三方SDK进行本地封装的时候对参数类型进行修改,比如://SDK 头文件void Login(char *ip, unsigned short port, char原创 2017-01-10 17:35:49 · 322 阅读 · 0 评论 -
C#调用C/C++的dll须知
1. C#类型与C/C++类型的对应关系 基本数据类型(C# <—> C/C++) System.Int32,int <—> int, long System.Int64,int64 <—> long long, __int64 System.Char, char <—> char, byte, unsigned char System.Int16, short <—>原创 2017-01-20 14:32:34 · 1894 阅读 · 0 评论 -
C++11新特性之operator "" xxx(const char *, size_t n)
从C++11开始,我们可以使用以下形式通过常量字符串构造自定义类型, 比如:class Person{public: Person(const std::string& name): _name(name){} std::string name() const { return _name; }private: std::string name;原创 2017-12-05 11:30:24 · 1881 阅读 · 0 评论 -
C++ 之and, and_eq, or, or_eq, xor, xor_eq, not, not_eq操作符
在C++11标准中,新增了一些关键字,这些关键字也是操作符:and, and_eq, or, or_eq, xor, xor_eq, not, not_eq, bitand, bitorand表示逻辑与操作, 是C++原有操作符 && 的等效替换bool success1 = execute_some_task();bool success2 = execute_another_task();i原创 2017-12-05 11:56:45 · 13637 阅读 · 2 评论 -
C++开发者对C语言开发的一些建议
作为一名C/C++混合开发人员,在C语言和C++的交替开发时, 常遇到一些很不有好的C语言接口,这样给C++的开发带来了不少的麻烦,个人认为, 有必要在给出一些合理性建议来规避一些不必要的麻烦关于头文件我们都知道, C++是兼容C语言的, 所以我们在使用C++的时候, 可以直接包含C语言的头文件来调用C语言的函数, 但是一般C语言初学者或者C语言编程习惯不是很好的人写的C语言接口头文件...原创 2018-02-11 12:05:20 · 509 阅读 · 0 评论 -
C++ 文件操作之行操作(FileLines)
想法来源由于在很多时候, 我们针对文件的操作都是针对于行进行的,尤其是只想根据某个文件的某一行或多行内容进行修改,这个时候就需要一个以行为单位进行文件管理的工具了,本文就是介绍了其中的某种实现行操作需要考虑的问题从文件加载所有行(load)尾部追加行(append)中间插入一行或多行(insert)移除某一行或多行(remove)读取某一行修改某一行遍历所有行(for)获取总行数保原创 2018-03-16 15:32:04 · 1251 阅读 · 0 评论 -
C++ 编程之std::string的utils
众所周知, C++标准库的std::string 如果用来处理字符串的话, 会很不友好,譬如使用字符串拆分split, 字符串数组组合啊, 字符串大小写转换之类的 本文讲述的是一些通过标准库现有接口实现的部分字符串操作方法1. split#include <vector>int count(const std::string& string, const s...原创 2018-01-03 16:57:58 · 2755 阅读 · 0 评论 -
编程小记—— C/C++中 x & -x 表示含义
说明看多了各种优秀看源代码的经常会遇到一些很常见的公式 本篇文章记录的 x & -x 就是其中的一种含义我们都知道, -x 的值, 其实就是在x的值的基础上进行按位取反(~x)之后在增加1所得, 也就是说, x & -x == x & (~x + 1)1. x 为偶数我们都知道, 当一个奇数 + 1时, 表示的二进制数则会发生进位, 这样的话, 会产生一个连锁反应,也就是最低位的那些连续的1都会原创 2018-04-13 17:41:54 · 33355 阅读 · 8 评论 -
C++11 仿照swift 中的defer 实现的defer功能
说明使用过swift开发过iOS应用的广大搬砖工都知道, 在swift语言里, 有一个很好用的关键字 defer 这个defer有什么用呢? 在某个函数或者代码块中, 如果使用了defer 添加了一段代码, 会发生什么呢? 哈哈, 当然是 在代码块结束时, 一定会调用这段代码了。 这样有什么好处呢? 我们知道, 有些操作需要很多步骤,其中一步出错,就可能需要是整个操作流程结束, 但是...原创 2018-05-24 16:20:14 · 696 阅读 · 7 评论