- 博客(123)
- 收藏
- 关注
原创 C++ explicit关键字的作用
这个关键字只能用于类的构造函数,被修饰的构造函数不能发生相应的隐式类型转换,只能以显式的方式进行类型转换。另外,这个关键字只能用于单个参数(这里的单个参数包括多参但是具有默认参数的函数)的构造函数。
2024-12-02 20:14:59
518
原创 shell 中 -z 和 -n 的区别
的长度大于 0,则条件为真。的长度为 0,则条件为真。用于检测字符串是否非空,而。用于检测字符串是否为空。
2024-11-20 16:23:05
2058
原创 C++20: 概念 concept
Concepts(概念)是 C++20 引入的一项重要特性,用于对模板参数进行约束和检查。通过使用 Concepts,开发者可以在编译期对模板参数的类型和行为进行验证,从而提高代码的可读性、可维护性和错误信息的清晰度。Concepts 为 C++ 模板编程带来了强大的类型约束机制,使得模板代码更加健壮、可读和易于维护。通过在编译期进行类型检查,Concepts 帮助开发者更早地发现错误,并提供更直观的错误信息。C++20 提供了一些预定义的 Concepts,如。编译器会给出清晰的错误信息,指出。
2024-08-24 16:04:59
711
原创 Linux系统编程:sendmsg与recvmsg的使用方法
在 Unix 网络编程中,msghdr、iovec 和 cmsghdr 是三个关键的结构体,它们用于在系统调用 sendmsg 和 recvmsg 中处理复杂的消息传递,特别是涉及到多缓冲区数据和控制信息(例如,文件描述符的传递)。在学习sendmsg 和 recvmsg之前,我们先来看一下这三个结构体的结构:我们先来看一下他的英文含义,便于我们记忆:: Message Header下面是他本身的结构:作用 和 : 用于指定消息的目的地址,主要在发送时使用。在 Unix 域套接字中,这两个字段通常为
2024-08-14 18:08:45
1607
3
原创 C++:奇异递归模板模式(CRTP模式)
在 C++ 中,如果一个类是空的(即没有非静态成员变量,没有虚函数,没有虚基类),它通常不会占用任何内存空间。当一个派生类继承一个空基类时,编译器可以将这个基类的存储空间与派生类的其他成员共享,从而减少内存占用。通过 CRTP,可以在编译时实现多态行为,而不是依赖于运行时多态(如虚函数表)。如果派生类未实现这些方法,将在编译时产生错误。是一个空基类,按照一般规则,空类通常会占用 1 字节的空间来保证不同对象具有唯一的地址。对象大小仅为 4 字节,即 int 的大小,而没有额外增加由于基类而带来的存储开销。
2024-08-09 15:00:27
454
原创 vscode ssh-remote 疑似内存泄漏问题
版本:1.88.1(通用)日期:2024-04-10T17:42:52.765Z操作系统:Darwin x64 23.4.0。
2024-08-08 17:49:15
1608
原创 后端C++: 主从反应堆 Unix Domain Sockets (UDS) 通讯方式示例
这种方式是主从反应堆中,主反应堆和从反应堆两个进程通信方式的一种。这种方式是一种在 Unix / Linux 操作系统上用于进程间通讯的机制。与传统的网络套接字(TCP/IP Sockets)不同,UDS 在同一台机器上进行通讯,,因此具有更高的性能和更低的延迟。
2024-08-07 16:08:22
521
原创 C++迈向精通:STL-iterator_traits迭代器类型萃取解析
这样做的好处:在C++中有两种迭代器类型,一种是迭代器对象,一种是C语言形式的指针,通过迭代器萃取,我们可以统一迭代器的类型使用方式。解析的详细内容,欢迎评论区提问或者指正。可以发现,当我们调用C++中的。
2024-07-26 15:32:50
350
原创 C++迈向精通:STL设计机制之运算检查(含部分源码解析)
sort函数在排序之前会先进行一个检查,那就是是否支持小于运算符:源码是这样写的:这行代码的会对类型进行检查,看看类型是否支持小于运算,如果不支持,LSP会直接检查并且报错。其实,进行运算符号的支持判断并不难,我们只需要写一段对应的代码即可,但是STL中的源码就很神奇,他做到了不消耗系统资源而达到代码检查的目的。先来看看这是一个什么东西:根据编程规范,这个东西大概率是一个宏(因为他全是大写),我们跳转到源码看一看:一看,果然是一个宏,这个代码使用一个do{ }while。
2024-07-19 18:09:28
1107
1
原创 C++迈向精通:模板中的引用与remove_reference原理
在模板中,双 '‘ 会被解析为“引用”,这个“引用”可以是“左值”引用,也可以是“右值”引用。我们查看一下编译器是如何分析类型的:执行:可以得到如下结果:func(a)对应的是对应的是可以发现:左值a被解析为int &;右值123被解析为int &&。因此,可以发现:在模板函数(参数为双&&)中,所有模板参数都会被转换为引用这不禁让人产生疑惑,我的模板参数明确填写了为双为什么还能被转换为 单 ‘&’ 呢?
2024-07-16 22:25:46
396
原创 C++迈向精通:理解函数声明,编译器是如何看懂声明的?
详细讲解了C/C++中的声明的方式与解析原理,帮助你彻底理解C/C++中的语法陷阱和声明格式
2024-07-10 23:10:44
863
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人