
c++
UE5默认C++17,禁用std::unique_ptr管理UObject因GC冲突;C++20仅限非UCLASS模块;范围for需用const引用避免拷贝;蓝图函数参数须用TArray/TMap而非...
栈内存分配是编译期确定的连续空间,堆内存分配是运行时动态申请的离散空间;栈由编译器自动管理、速度快但大小固定且有限,堆灵活但开销大、易出错;应优先使用栈,堆仅用于跨作用域或大小未知场景。
std::forward_as_tuple是延迟完美转发的元组包装器,返回tuple以保持参数值类别,专用于后续转发(如piecewise_construct构造),不适用于长期持有。
std::is_scoped_enum用于精准识别enumclass/struct,C++23标准化,支持ifconstexpr分支、SFINAE约束及安全提取底层类型,不关心final、conste...
thread_local变量为每个线程提供独立副本,延迟初始化且线程安全,支持类类型构造/析构;区别于static(共享需加锁)、__thread(无构造/析构)和WindowsTLSAPI(手动管理...
因为std::coroutine_handle不管理状态和唤醒逻辑,仅是轻量包装;需手动确保协程处于suspend状态、内存有效且无并发resume,否则易触发未定义行为。
std::views::split配合std::string_view是最轻量的字符串分割方案,C++20原生支持、零拷贝、懒求值;需注意生命周期、空字段处理及输入范围必须可借用。
std::endl比‘\n’慢是因为它除输出换行符外还强制刷新缓冲区,引发额外系统调用;而‘\n’仅写入缓冲区,由流自主管理刷新。
range-basedfor要求begin()和end()以获取迭代器范围;它优先通过ADL查找非成员函数,再回退到成员函数,推荐在同命名空间定义inline非模板版本以支持ADL和const重载。
最安全的二维数组实现是std::vector嵌套构造,如std::vectormat(3,std::vector(4,0));它支持动态尺寸、自动内存管理,且避免双重指针的手动内存错误。