- 博客(21)
- 收藏
- 关注
原创 一文讲通 C++ 所有初始化方法
在各种编程语言中,初始化都是非常重要的步骤,用于确保对象在使用前具有确定的初始状态。C++ 提供了多种初始化方法,每种方法都有其特定的使用场景和注意事项。综上所述,C++ 的初始化方法各有特点和使用场景,开发者在选择初始化方法时需要根据具体情况谨慎考虑,并注意避免常见的错误和陷阱。
2024-08-16 10:05:18 954
原创 C++ 异常安全(四):RAII — 核心资源管理方案
(Resource Acquisition Is Initialization,资源获取即初始化)是 C++ 核心资源管理方案,也是保障异常安全编程的核心模式。RAII 的核心思想是将资源的生命周期与拥有该资源的对象的生命周期绑定,通过利用对象的构造函数和析构函数来自动管理资源,确保资源在使用完毕后能够正确释放,从而避免内存泄漏和其他资源管理错误。
2024-08-12 09:47:10 917
原创 详解 C++ 移动构造函数和移动赋值运算符
移动构造函数和移动赋值运算符是 C++11 标准引入的特性,用于优化资源管理和提升性能,特别是在处理临时对象或需要复制大量数据时,也是现代 C++ 的重要特性。
2024-08-12 09:17:52 309
原创 C++ 异常安全(三):noexcept 关键字的关键作用
表明函数不会抛出异常,编译器在生成可执行程序时可以做出一些优化。例如,编译器可能减少或省略用于异常处理的代码,如栈回退(stack unwinding)的准备代码,从能减少运行开销,而且对于不会抛出异常的代码,其执行顺序可以被调整,某些步骤也可以被省略,以便提高运行效率。时,表示不会抛出任何异常,标记为 noexcept(false) 时,表示会抛出异常,便于开发者理解函数的异常安全性。关键字提高了代码可读性,明确标示函数是否会抛出异常,使开发者对可能抛出异常的代码及时作出正确处理,保障异常安全。
2024-08-02 17:14:44 566
原创 C++ 中的正号(+)到底有什么用?
在 C++ 中,正号(+)作为负号(-)的对称一元运算符,看起来好像有些多余,但实际另有玄机!lambda 表达式、数组、字符串字面量等可以转为指针,用正号转换可能是最简练的写法。其中,f1 是一个函数,f2 是函数指针,f2 可以被赋予新的值,f1 不可以。指针是无所谓正负的,所以 C++ 的这条特性显然是有意这么设计的。会被实例化成两个不同的函数,如果用正号将字符串字面量转为。这便是一元正号在 C++ 中的特殊功能,更多编程问题请参见《的类型是不一样的,一个是。
2024-08-01 17:15:23 237
原创 详细总结 C++ 运算符重载的注意事项
C++ 运算符重载是一种强大的特性,这种特性允许开发者为已存在的运算符赋予新的含义,以适应特定数据类型的需求,也是泛型编程的重要基础。运算符重载应保持运算符原有的基本含义,避免引起混淆。例如,重载加法运算符时,应确保其结果与常规加法操作相符。某些运算符,如成员访问运算符、指针访问运算符(用于指针)、作用域解析运算符、三目运算符?等,是不允许重载的。运算符重载可以通过成员函数或友元函数实现。成员函数形式重载时,左侧操作数必须是自定义类型。
2024-07-31 09:13:07 361
原创 C++ 异常安全(二):try-catch 语句的注意事项
C++ 的try-catch语句用于处理异常。当在try块中的代码抛出一个异常时,程序会立即跳出try块,并查找与之匹配的catch块来执行。以下是使用try-catch。
2024-07-30 09:24:48 621 1
原创 详解 C/C++ 全局对象注意事项
这意味着如果一个全局对象的析构依赖于另一个全局对象的状态,那么需要特别注意析构函数的执行顺序,以避免出现依赖的对象已经被析构而导致的问题。因此,必须确保全局对象的构造函数不依赖于任何在构造函数执行时尚未初始化的其他全局对象或静态变量。:虽然全局对象可以在整个程序中方便地访问和共享数据,但过度使用全局对象可能导致代码的可读性和可维护性下降。因此,应谨慎使用全局对象,并尽量将其使用范围限制在必要的范围内。:全局对象具有静态存储期,这意味着它们在程序的整个运行过程中都存在,而不是在创建它们的函数返回时就被销毁。
2024-07-29 09:36:07 287
原创 C++ 异常安全(一):盘点那些不应抛出异常的函数
在 C++11 及以后的标准中,移动构造函数和移动赋值运算符不应抛出异常,这是因为移动操作通常比复制操作更快,且不会抛出异常,编译器可以利用这一点来优化代码,例如通过消除不必要的临时对象。在某些特定上下文中,如异常处理过程中(catch 块)或异常类自身的成员函数中,除非是有意重新抛出异常,否则也不应抛出异常,以保持程序的异常安全状态。析构函数负责清理对象占用的资源,如果析构函数在异常处理过程中被调用(例如在栈展开时),它抛出的新异常会与当前处理的异常冲突。总之,在设计函数时,应仔细考虑是否应该抛出异常。
2024-07-26 15:50:15 456
原创 C/C++ 浮点运算相关要点和注意事项
总地来说,C/C++中的浮点运算需要特别注意精度、比较方法、性能和测试。开发者需要了解浮点数的表示和特性,并采取相应的措施来确保浮点运算的正确性和效率。浮点运算是复杂且需要特别注意的领域。由于浮点数的表示方式和精度限制,进行浮点运算时可能会遇到一些问题。6. 浮点数和整数之间的转换。8. 浮点数的打印和读取。10. 浮点运算的测试。4. 浮点运算的性能。
2024-07-24 09:21:56 393
原创 C/C++ #include 指令注意事项
指令是一个预处理器指令,用于在编译时将指定的文件内容包含到源文件中。这样可以确保头文件只被包含一次,避免重复定义和编译错误。指令在项目中的正确使用,从而提高代码的质量和可维护性。通过遵循这些注意事项,可以确保。在 C/C++ 中,
2024-07-23 09:15:01 433
原创 C++ 特殊成员函数的注意事项
在 C++ 中,特殊成员函数指的是编译器在某些特定情况下会自动生成的成员函数,包括默认构造函数、析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数和移动赋值运算符。总之,了解和正确使用C++中的特殊成员函数对于编写高效、可维护的代码至关重要。在设计类时,应仔细考虑是否需要显式定义这些函数,以及如何正确实现它们。了解并正确使用这些特殊成员函数对于编写高效、可维护的 C++ 代码至关重要。
2024-07-23 09:03:15 894
原创 C++ 语言标准详解
《安规集》正是一套 C++ 标准的导读资料,全称《360 安全规则集合》。众所周知,学习者不宜直接阅读语言标准文档,否则会迷失在繁杂的细节之中,对此《安规集》应运而生,为读者深入学习语言标准提供指引。
2023-11-10 15:53:57 85
原创 详解编程语言之发展趋势
近十年来,互联网发生了翻天覆地的变化。新的联网方式、新的通讯方式,乃至新的支付、交易方式深刻地影响了人们的生活,在浪潮的冲击之下,传统编程语言经受住了考验,并焕发了新的生机,同时也涌现出了很多优秀的新型编程语言。
2022-10-18 16:09:32 1565
原创 详解 C/C++ 各大编程规范
详解 Google C++ Style Guide、C++ Core Guidelines、MISRA 以及腾讯、华为、360 等各大 C/C++ 编程规范
2022-03-17 15:41:22 2779
转载 详解 C++ Undefined Behavior
梳理了 C++ ISO 标准中声明的未定义行为成因,并给出详细解说和示例代码以及应对措施,供开发者参考,也为代码审计和 Code Review 提供指导意见。
2022-03-15 11:06:21 694
原创 360 C++ 编程规范
《安全规则集合》,简称《安规集》,是一部面向安全编程的实用指南,由360质量工程部编著,指导过安全卫士、鲁大师等项目的代码编写工作。
2021-12-15 13:50:37 2260
A PATH TOWARD SECURE AND MEASURABLE SOFTWARE
2024-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人