C++(整理合集)

1.字符型变量赋值

C++/C中反斜杠不可以作为字符常量单独使用,反斜杠是转义字符的开始标记

字符型变量的赋值规则:

(1)反斜杠不能单独使用,'\\'表示'\'自身

(2)单引号赋值时只能有一个字符

(3)整数赋值时要注意范围:unsigned 0~255 signed -128~127

(4)双引号不能赋值,"a"是const char*,不能用字符串给字符常量赋值

(5)注意八进制和十六进制的赋值 :

八进制:\ooo(ooo是1-3位,0~7的数字)

十六进制:\xhh(hh是1~2位,0~F的数字)


2.C++23 deducing this(显式对象参数)和CRTP

(2)deducing this

C++23之前如果想写一种成员函数支持左值,常性左值,右值,常性右值四种调用,必须写四个重载函数,明明逻辑都相同却要写四遍,维护起来非常冗余,所以引入了deducing this

调用方式 self 被推导为的类型
普通左值 Widget w; w.get_value(); Widget&(左值引用)
const 左值 const Widget& cw = w; cw.get_value(); const Widget&(const 左值引用)
右值 Widget{}.get_value(); Widget&&(右值引用)
const 右值 std::as_const(Widget{}).get_value(); const Widget&&(const 右值引用)

deducing this就是用一行代码实现,const和非const,左值右值的类型转换,解决了成员函数冗余的问题

(2)CRTP(奇异递归模版模式)

让派生类把自己的类型,作为模板参数传给基类,基类再通过静态转换拿到派生类的实例,从而实现编译期的多态行为。在 C++23 引入 deducing this 之前,很多场景都得靠它来实现

它的核心是:基类知道自己被哪个派生类继承了,能安全地调用派生类的成员,又不用写虚函数。

CRTP 解决了什么问题?

它是为了替代虚函数实现的动态多态,带来两个核心优势:

零运行时开销:虚函数需要虚函数表、运行时动态绑定,而 CRTP 是编译期静态绑定,没有额外开销。

可以访问派生类的成员:普通基类不知道派生类的存在,CRTP 让基类能 "安全地知道派生类是谁",从而调用派生类的方法。


相关推荐
霸道流氓气质13 分钟前
AgentFlow 入门与实战:Task-Based 并发、EWMA 动态调度与四道门禁的 Java 生产级编排
java·开发语言
释厄6231 小时前
错误无误公理——错误正确本同源都迭代定律——逆转有价值
android·开发语言·kotlin
2601_962885721 小时前
如何用 Python计算 CR能量指标(中间意愿指标)?
开发语言·python
hetao17338371 小时前
校内场-提高组 ZYZSC-S-Round 2
c++·算法
hetao17338372 小时前
2026-10-14 hetao1733837 的刷题记录
c++·算法
临床数据科学和人工智能兴趣组2 小时前
在R语言的生态系统中,字符串处理一直是一个重要且复杂的任务
开发语言·正则表达式·r语言·r语言-4.2.1
蜗牛互联网2 小时前
Python调用Gemini Structured Outputs实现工单路由门禁
java·开发语言·人工智能·python
SEO_juper2 小时前
给网页做可引用性评分:判断内容够不够让 AI 引用(GEO 工具,附代码)
开发语言·人工智能·爬虫·python·seo·独立站
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 产品定位、功能模块与客户端原型解读
java·开发语言·交友
盛世宏博北京2 小时前
十二防档案库房总线架构设计:恒湿消毒净化一体机 RS485 组网实战笔记
开发语言·笔记·php·恒湿机·档案八防温湿度