C++中string类提供安全便捷的字符串操作,需包含<string>头文件;支持空初始化、赋值、构造、拷贝和重复字符构造;常用方法包括length()获取长度,+或+=拼接,[]或at()访问字符,substr()提取子串,find()查找返回索引或npos,replace()替换,erase()删除,insert()插入;可通过c_…
友元函数可访问类的私有成员,通过friend关键字声明,用于运算符重载、跨类数据共享等场景,如重载<<输出Point对象;但会破坏封装性,应谨慎使用。 在C++中,友元函数(friend function)是一种特殊的机制,它允许一个非成员函数访问类的私有(private)和保护(protected)成员。正常情况下,类外的函数无法直接…
构造函数负责对象初始化,析构函数处理资源释放,二者共同管理对象生命周期。构造函数与类同名、可重载,包括默认、带参、拷贝和移动构造函数;析构函数唯一且自动调用,用于清理如内存等资源。遵循RAII原则,确保资源安全。 在C++中,对象的生命周期管理是程序设计的核心部分之一。构造函数和析构函数是控制对象创建与销毁的关键机制。理解它们的工作原理,有助于写出…
lambda表达式是C++11引入的匿名函数机制,语法为[捕获列表](参数列表)->返回类型{函数体},可捕获外部变量如[=]值捕获、[&]引用捕获,用于算法或回调场景。 在C++中,lambda表达式是一种定义匿名函数的简洁方式,常用于需要传递函数作为参数的场合,比如算法或回调。它的语法灵活且功能强大,从C++11开始支持。 基本语…
PIMPL idiom的核心是将类的实现细节移至独立的私有类中,主类通过指针(如std::unique_ptr)访问,从而隐藏实现、减少编译依赖、提升封装性和二进制兼容性。 PIMPL(Pointer to IMPLementation)是一种常见的C++设计模式,用于隐藏类的实现细节,降低编译依赖,提升代码的封装性和二进制兼容性。它通过将具体实现…
const_cast用于修改对象的常量性,如去除const限定以适配旧接口,但修改原const对象属未定义行为;reinterpret_cast则进行低层类型重解释,如指针与整数互转或无关指针类型转换,依赖平台且易引发未定义行为;二者用途不同,前者相对安全用于特定场景,后者仅限底层编程谨慎使用。 在C++中,const_cast 和 reinter…
std::priority_queue是基于堆实现的自动排序容器,默认为最大堆,仅允许访问顶部元素,支持自定义比较器以实现最小堆或结构体排序,常用于Dijkstra算法、任务调度等需动态获取最优先级元素的场景。 std::priority_queue 是 C++ 标准库中定义在 <queue> 头文件里的容器适配器,用于实现一个自动排序…
const用于声明不可修改的变量、指针、函数参数等,提升安全性和可读性;1. const变量需初始化且不可修改;2. const与指针结合有三种形式:指向常量的指针、常量指针、指向常量的常量指针;3. const修饰函数参数可防止误改实参;4. const成员函数保证对象状态不变。 在C++中,const关键字是一个非常重要的常量限定符,用于声明不…
std::string是C++中处理字符串的核心类,提供自动内存管理与丰富操作。1. 需包含<string>头文件;2. 支持空构造、字面量、拷贝、C字符串及重复字符构造;3. 常用函数包括size/length、empty、clear、append/+=、insert、erase、replace、substr、c_str、data;4…
头文件(.h)用于声明接口,包含函数原型、类定义等,通过#include被引用,配合include guard防止重复包含;实现文件(.cpp)提供具体实现,包含函数体和成员方法逻辑,编译后生成目标文件。分离两者可提升编译效率、代码复用性与封装性,便于团队协作。例如math_utils.h声明calculateCircleArea函数,math_u…