
成员函数
std::allocator通过分离内存分配与对象构造实现高效内存管理:allocate()获取未初始化内存,construct()延迟构造对象,destroy()显式析构,deallocate()释...
直接用libcurlCAPI写C++易出问题,因其无RAII、异常安全和自动资源管理,易致cleanup遗漏、异常泄漏、悬垂句柄;需封装CURL*句柄、缓冲区、errorbuffer并正确处理回调与错...
std::string::c_str()返回的指针仅在原string对象未被修改且未析构时有效,其生命周期完全绑定于该对象;任何引起重分配的操作或析构都会使其变为悬垂指针。
const变量有类型且受编译器类型系统管理,#define宏无类型、仅为预处理器文本替换;前者支持类型检查、作用域控制、调试识别和模板推导,后者易引发命名污染、调试困难及求值错误。
不能直接用std::function+std::vector存槽函数,因裸指针无法感知被观察对象生命周期,导致析构后调用引发未定义行为;安全方案是用std::weak_ptr+std::shared_...
range-basedfor要求begin()和end()以获取迭代器范围;它优先通过ADL查找非成员函数,再回退到成员函数,推荐在同命名空间定义inline非模板版本以支持ADL和const重载。
std::forward_iterator是单向可读写迭代器,支持++、*、==、!=及复制比较,但不支持--或随机访问;std::bidirectional_iterator在此基础上增加--操作,...
decltype原封不动提取表达式编译期类型,含引用、const等限定符;括号决定语义:decltype(x)得变量声明类型,decltype((x))得左值引用类型。
const变量必须初始化,否则编译错误;const成员函数不可修改非mutable成员;mutable是唯一例外;const指针与指针const需区分;const_cast仅用于原始对象非常量的场景。
std::function用于存储任何符合指定签名的可调用对象,如普通函数、lambda、成员函数指针或std::bind结果;需严格匹配参数与返回类型,捕获局部变量时须注意生命周期,空对象调用抛st...