随笔分类 -  C++代码块

摘要:static 类型的变量或函数定义的作用域仅限于当前编译单元(通常是 .c 文件),所以一般建议在 .c 文件中定义 static 类型的变量或函数,而不是在 .h 文件中。 具体原因 避免全局命名冲突:static 限定符会将变量或函数的作用域限制在当前文件中,这样可以避免在不同 .c 文件之间发 阅读全文
posted @ 2024-11-13 23:22 海_纳百川 阅读(64) 评论(0) 推荐(0) 编辑
摘要:#define CORE_INIT(fn) __define_core_initcall(fn) 这一行代码是一个宏定义,用于将 fn 传递给 __define_core_initcall 宏或函数。具体解释如下: #define:定义一个宏,用于将宏名替换为对应的代码片段。 CORE_INIT(f 阅读全文
posted @ 2024-11-13 23:19 海_纳百川 阅读(6) 评论(0) 推荐(0) 编辑
摘要:头文件(.h 文件)中的声明默认是 extern 的,即使你没有显式地写出 extern 关键字。这样做是因为头文件的目的是提供符号的声明,而不是定义(即不提供函数或变量的具体实现)。C 和 C++ 编译器会默认认为头文件中的全局函数和变量声明是 extern,即这些符号在其他源文件中定义。 例子: 阅读全文
posted @ 2024-11-13 23:15 海_纳百川 阅读(82) 评论(0) 推荐(0) 编辑
摘要:资源或变量需要释放的情况通常是在其内存或其他系统资源是动态分配的或非自动管理的,尤其是在手动分配资源时(如 new、malloc、文件句柄、网络连接等)。未释放这些资源会导致内存泄漏或资源泄漏。以下是一些典型需要释放资源的场景: 1. 动态内存分配 通过 new、new[]、malloc、callo 阅读全文
posted @ 2024-11-11 22:28 海_纳百川 阅读(33) 评论(0) 推荐(0) 编辑
摘要:一般情况下,结构体不需要手动释放。如果结构体只包含基本类型(如 int、float 等)或没有指针成员,其内存由栈或堆自动管理,不需要手动释放。 然而,如果结构体包含动态分配的资源(例如指针、文件句柄等),则需要在结构体的生命周期结束时手动释放这些资源。通常可以通过以下方式来管理: 使用析构函数:如 阅读全文
posted @ 2024-11-11 22:24 海_纳百川 阅读(139) 评论(0) 推荐(0) 编辑
摘要:使用 begin() 和 end() 来遍历 list 的原因可能出于以下几个考虑: 支持删除操作: 在 for 循环中使用迭代器而非范围 for 循环 (for(auto& item : list)) 更方便对元素执行删除操作。当需要在循环过程中删除元素时,使用普通范围 for 循环会导致迭代器失 阅读全文
posted @ 2024-11-11 22:16 海_纳百川 阅读(36) 评论(0) 推荐(0) 编辑
摘要:这个编译错误提示: Parameter 'index' is const-qualified in the function declaration; const-qualification of parameters only has an effect in function definitio 阅读全文
posted @ 2024-11-10 22:15 海_纳百川 阅读(63) 评论(0) 推荐(0) 编辑
摘要:在 C++ 中,enum 和 enum class 都用于定义枚举类型,但它们在使用时有一些关键区别。主要区别在于作用域和类型安全性: 1. 作用域:enum class 是强作用域的,而 enum 是弱作用域的。 enum class(强作用域枚举):枚举值需要使用枚举类型的名称进行限定。例如: 阅读全文
posted @ 2024-11-10 22:04 海_纳百川 阅读(193) 评论(0) 推荐(0) 编辑
摘要:在 C++ 中,this 是一个指针,指向调用成员函数的当前对象实例。它只能在类的非静态成员函数中使用,用于访问当前对象的成员或返回当前对象自身的地址。 this 关键字的用法和作用 访问当前对象的成员:使用 this 可以明确表示对当前对象的成员变量或成员函数的引用,特别是在参数名称和成员变量名称 阅读全文
posted @ 2024-11-10 21:55 海_纳百川 阅读(20) 评论(0) 推荐(0) 编辑
摘要:这条警告通常表示在一个类的构造函数中,某些成员变量(如 object 和 th_cfg)没有被显式初始化。编译器或静态分析工具(例如 clang-tidy)可能会给出这样的警告,以帮助开发者避免潜在的未定义行为。 可能原因 缺少初始化:构造函数中没有对这些成员变量进行初始化,它们的值可能是未定义的。 阅读全文
posted @ 2024-11-10 21:52 海_纳百川 阅读(70) 评论(0) 推荐(0) 编辑
摘要:如果 a.h 中使用了 using namespace aa;,并且 b.cpp 包含了 a.h,那么在 b.cpp 中可以直接使用 aa 命名空间中的内容,因为 using namespace aa; 会被一并包含进来。 解释 using namespace 会将指定命名空间中的所有符号引入当前作 阅读全文
posted @ 2024-11-09 23:09 海_纳百川 阅读(74) 评论(0) 推荐(0) 编辑
摘要:这个编译错误消息指的是,在 typedef 声明中引入了一个匿名非C兼容类型,编译器为了链接处理给它了一个名字,但它建议添加一个标签名称来显式命名该类型,以便更好地支持 C 语言的兼容性和跨文件链接。 问题原因 在 C++ 中,匿名结构体和匿名联合体是合法的,它们可以在没有显式名称的情况下使用 ty 阅读全文
posted @ 2024-11-09 23:03 海_纳百川 阅读(110) 评论(0) 推荐(0) 编辑
摘要:例如: if () return; return; 语句在条件成立时被执行,表示提前退出当前函数,不再执行后续代码。 阅读全文
posted @ 2024-11-09 22:50 海_纳百川 阅读(3) 评论(0) 推荐(0) 编辑
摘要:static_cast<type> 是 C++ 中的一种类型转换方式,用于在编译期进行静态类型转换。与 C 风格的强制类型转换不同,static_cast 更加安全和明确,因为它只允许特定的类型转换,避免了潜在的错误和歧义。 static_cast 的用法 static_cast<type>(exp 阅读全文
posted @ 2024-11-08 23:10 海_纳百川 阅读(87) 评论(0) 推荐(0) 编辑
摘要:std::shared_ptr 是 C++11 标准库中的智能指针类型,用于管理动态分配的对象。与传统指针不同,std::shared_ptr 自动管理内存,并在不再使用时自动释放对象,以避免内存泄漏。它是一种共享所有权的智能指针,即可以让多个 std::shared_ptr 指向同一个对象,并且会 阅读全文
posted @ 2024-11-08 23:06 海_纳百川 阅读(200) 评论(0) 推荐(0) 编辑
摘要:在 C++ 中,继承的方式有三种:public、protected 和 private。它们控制了基类成员在派生类中的访问权限。以下是这三种继承方式的区别: 1. public 继承 基类的 public 成员在派生类中保持 public。 基类的 protected 成员在派生类中保持 prote 阅读全文
posted @ 2024-11-08 23:03 海_纳百川 阅读(12) 评论(0) 推荐(0) 编辑
摘要:‌函数名后面加const表示该函数是一个常成员函数,即该函数不会修改类的任何成员变量。‌ 在C++中,常成员函数通过在函数声明和定义后添加const关键字来标识。常成员函数不能修改类的任何成员变量,这保证了类的接口的稳定性。例如: class Point { public: int GetX() c 阅读全文
posted @ 2024-11-08 23:01 海_纳百川 阅读(536) 评论(0) 推荐(0) 编辑
摘要:在C++中,struct可以继承类,反之,类也可以继承struct。struct和类的唯一区别在于访问级别,默认情况下,struct的成员是public,而类的成员是private。 以下是一个简单的例子: class BaseClass {public: void BaseFunction() { 阅读全文
posted @ 2024-11-08 22:46 海_纳百川 阅读(306) 评论(0) 推荐(0) 编辑
摘要:using 和 typedef 都可以用于定义类型别名,但在 C++ 中,它们有一些区别和各自的优势: 语法简洁性: using 语法通常比 typedef 更直观、简洁,尤其是在复杂的类型定义时。 示例: typedef int (*FunctionPtr)(double); // 使用 type 阅读全文
posted @ 2024-11-08 22:28 海_纳百川 阅读(80) 评论(0) 推荐(0) 编辑
摘要:noexcept 是C++中的一种关键字,用于指定一个函数在执行时不会抛出异常。这一关键字可以提高代码的安全性,并允许编译器进行额外的优化。具体来说: 函数不会抛出异常:当一个函数被声明为 noexcept 时,表示该函数在任何情况下都不会抛出异常。如果函数实际抛出异常,将导致程序直接调用 std: 阅读全文
posted @ 2024-11-06 23:26 海_纳百川 阅读(76) 评论(0) 推荐(0) 编辑

本站总访问量8979603
 
点击右上角即可分享
微信分享提示