头文件声明接口,源文件实现功能。.h文件包含类定义、函数声明和宏定义,通过#ifndef或#pragma once防止重复包含;.cpp文件实现函数逻辑,包含对应头文件以确保一致性。分离声明与实现可提高编译效率,支持多文件共享接口,隐藏实现细节,便于团队协作。例如Math.h声明add函数,Math.cpp实现加法逻辑,其他文件只需包含头文件即可使…
nullptr是C++11引入的关键字,类型为std::nullptr_t,可隐式转换为任意指针类型但不能转为整型,相比NULL或0具有更好的类型安全、语义清晰和避免重载冲突的优势,应始终用于空指针操作。 在C++中,nullptr 是一个关键字,用来表示空指针常量。它从C++11标准开始引入,用于替代传统的 NULL 或 0 来表示指针不指向任何…
STL是C++高效编程的核心,由容器、迭代器、算法、函数对象、适配器和分配器六大部件构成;容器分为序列式(如vector、list)、关联式(如set、map)和无序关联式(如unordered_map),按需选择可提升性能。 STL(Standard Template Library,标准模板库)是C++中非常重要的一部分,它提供了一套高效、通用…
RAII通过对象生命周期自动管理资源,将资源获取置于构造函数、释放置于析构函数,利用作用域确保资源安全释放。例如Buffer类在构造时分配内存、析构时释放,避免泄漏;std::unique_ptr、std::fstream、std::lock_guard等标准库组件均基于此机制,保证异常安全与代码简洁。 RAII,全称是Resource Acqui…
auto用于自动推导变量类型,简化复杂类型声明,提升代码可读性与编写效率,尤其适用于迭代器、lambda表达式和模板编程,其推导规则类似模板,需注意const、引用及初始化列表的处理,合理使用可增强代码简洁性与安全性。 在C++11及之后的标准中,auto关键字用于让编译器根据初始化表达式自动推导变量的类型。它简化了复杂类型的声明,提高了代码可读性…
STL是C++标准模板库,核心由容器、迭代器、算法、函数对象和适配器组成。1. 容器分序列式(如vector、list)、关联式(如set、map)和无序关联式(如unordered_map);2. 迭代器提供统一访问方式,包括输入、输出、前向、双向和随机访问类型;3. 算法通过迭代器操作数据,支持查找、排序、修改等操作;4. 函数对象和Lambd…
PIMPL是一种通过指针隐藏类实现细节的C++惯用法,将私有成员移至单独的Impl类中,主类仅保留指向它的智能指针,从而降低编译依赖、增强封装性与二进制兼容性,适用于公共库接口设计和复杂依赖管理。 PIMPL(Pointer to IMPLementation)是一种常用的C++编程技巧,用来隐藏类的实现细节,减少编译依赖,提升代码的封装性和模块化…
C++中string类提供安全便捷的字符串操作,需包含<string>头文件;支持空初始化、赋值、构造、拷贝和重复字符构造;常用方法包括length()获取长度,+或+=拼接,[]或at()访问字符,substr()提取子串,find()查找返回索引或npos,replace()替换,erase()删除,insert()插入;可通过c_…
头文件(.h)用于声明接口,包含函数原型、类定义等,通过#include被引用,配合include guard防止重复包含;实现文件(.cpp)提供具体实现,包含函数体和成员方法逻辑,编译后生成目标文件。分离两者可提升编译效率、代码复用性与封装性,便于团队协作。例如math_utils.h声明calculateCircleArea函数,math_u…
悬挂指针指向已释放内存,野指针未初始化,均导致未定义行为。1. 释放内存后立即将指针置为nullptr;2. 使用智能指针如std::unique_ptr、std::shared_ptr和std::weak_ptr自动管理生命周期;3. 避免返回局部变量的地址;4. 声明指针时必须初始化,推荐赋值为nullptr或有效地址。 悬挂指针(Dangli…