最新 最热

一个面试题引发的思考——类的特种成员函数

之前问面试者“定义一个空类,并声明该类的多个对象,为什么对象间可以相互赋值?”本意是希望面试者能够回答编译期默认生成的构造函数、拷贝构造函数和拷贝赋值运算符函数。但是并没有回答到点子上。进一步引导到,“类的特...

2024-07-18
1

[现代C++]可变参数和折叠表达式

C++程序员肯定接触过可变参数,毕竟我们都用过printf,但是直到C++11时C++才推出真正意义上的可变参数。

2024-07-18
1

std::optional:解决值存在性问题的利器

查找std::vector内的首个偶数,如果存在则返回该偶数;可是如果std::vecotr内不存在偶数时,该如何?通常是找一些魔幻值/错误码作为返回值,如-1;如如下代码...

2024-07-18
1

获取函数执行结果的n种方式

C++编程中,函数作为封装了一系列操作或计算过程的独立代码块,用于执行相应的功能。可能是操作文件IO、socket等资源,亦或者是修改某个成员变量,亦或者是单纯的执行计算并将结果返回给调用方。无论是哪种情况函数执行结果...

2024-07-18
1

浅析RVO

RVO(Return Value Optimization,返回值优化)是C++中的一种优化技术,用于避免不必要的对象拷贝,提高程序的性能和效率。NRVO(Named Return Value Optimization,命名返回值优化)是RVO的一种特殊情况,隶属于RVO范畴。...

2024-07-18
1

浅析C++中RAII

在C++编程中,RAII(Resource Acquisition Is Initialization,资源获取即初始化)是一种重要的编程范式,被广泛应用于管理资源的生命周期。这种技术通过在对象的构造函数中获取资源,而在析构函数中以获取顺序的逆序释放资源,从...

2024-07-18
1

std::variant和policy-based design的化学反应

通常来讲,C++的多态存在静态多态(函数重载)和动态多态(指针或引用+虚函数表),但是C++17引入新的特性——std::variant,为多态提供了新的实现方式。同时,也为policy——based design提供了新的书写方式。...

2024-07-18
1

类型安全的瑞士军刀——std::variant

当需要在同一块内存区域中存储不同类型的值且在任何时刻只会存储其中的一种类型时,联合体(union)总是作为首要选择,但是联合体存在如类型安全差、不支持构造函数和析构函数等缺点。为避免union存在的问题,C++17引入一个非...

2024-07-18
1

开源库推荐——magic_enum

在 C++ 中,枚举类型是一种非常常见的数据类型,它允许程序员定义一组命名的常量。然而,标准的 C++ 枚举在某些方面存在限制,比如无法直接将枚举值转换为字符串。这就导致枚举型变量对于书写日志着实不够友好,如果仅仅将枚举...

2024-07-18
1

C++20 concepts

概念(concepts),作为模板元编程(类模板和函数模板)的一部分,提出对模板实参的要求,进而影响模板的特化和函数重载。在编译期对实参求值,检测实参是否满足概念所提出的要求。...

2024-07-18
1