C++ 中的封装和抽象技术
文章平均质量分 95
封装在C++中是通过类实现的,包括数据成员和成员函数。访问修饰符(public、private、protected)控制成员的可见性。构造函数、析构函数、复制构造函数和赋值运算符控制对象的生命周期和复制行为。类可以组合其他类,形成复杂结构。友元函数和类可以访问私有和保护成员。
泡沫o0
目前 主要从事C++开发,兴趣在于不断学习和探索新知识,这也是我职业生涯中不断前进的动力。
通过我的博客,我希望与大家分享这一过程中所获得的知识和经验。
技术是一片深不可测的海洋,每一次深入学习都是对未知领域的探索和对自我能力的挑战。
在这个广阔的知识领域中,我们都是探险者,渴望揭开更多的奥秘,追求技术的极致。
展开
-
【C++ 动态库设计】动态库中的模板函数:解决如果将模板函数封装成API库
动态库,也常被称为共享库(Shared Libraries),是一个包含可以被多个程序共同使用的函数和数据的文件。这与静态库有所不同,静态库在编译时会被包含到最终的可执行文件中。使用动态库的好处是显而易见的。它允许多个程序共享同一份代码,这不仅减少了磁盘空间的使用,还可以简化更新和维护流程。当动态库更新时,所有使用它的应用程序都可以受益,而无需重新编译或链接。原创 2023-09-18 21:00:00 · 381 阅读 · 0 评论 -
【C/C++ API设计】C/C++ API与动态库设计:从入门到精通
在现代软件开发中,API(Application Programming Interface, 应用程序接口)和动态库(Dynamic Link Library, 动态链接库)已经成为了不可或缺的组件。它们为开发者提供了一个桥梁,使得不同的软件模块可以相互通信和协作。正如弗洛伊德曾经说过:“人是由其与他人的关系所定义的。”[^1],软件模块之间的关系也同样重要原创 2023-09-15 21:00:00 · 292 阅读 · 0 评论 -
【C++ 函数 基础教程 第五篇】C++深度解析:函数包裹与异步计算的艺术
在我们的日常编程实践中,函数包裹(Function Wrapping)是一种常见的技术手段。它的主要作用是将一个函数或者一段代码块“包裹”起来,使得我们可以在调用这个函数或者执行这段代码块的前后添加一些额外的操作。这种技术在很多场景下都有着广泛的应用,比如资源管理、性能测量、权限控制等等。原创 2023-08-06 00:15:00 · 173 阅读 · 2 评论 -
【C++ 命名空间】C++ 命名空间与嵌套命名空间入门指南
命名空间是C++中的一个重要概念,用于避免命名冲突,它可以将一组名称封装在一个特定的作用域中,使得这些名称与其它作用域中的名称分离开来。命名空间的概念 命名空间是一种逻辑分组机制,它用于将一组相关的名称封装在一个作用域中,从而避免命名冲突。命名空间可以包含变量、函数、类、结构体等各种类型的声明和定义。命名空间的作用 C++中的函数和变量都必须有唯一的名称,如果多个函数或变量具有相同的名称,就会产生命名冲突,导致编译错误。为了避免这种情况的发生,C++提供了命名空间。通过命名空间,我们可以将一组相关的名称原创 2022-11-02 15:01:48 · 1458 阅读 · 0 评论 -
【C++ 包裹类 std::thread】探索C++11 std::thread:如何使用它来创建、销毁和管理线程
探索C++11 std::thread:如何使用它来创建、销毁和管理线程原创 2023-01-10 15:16:27 · 2136 阅读 · 0 评论 -
【C/C++ Vector容量调整】理解C++ Vector:Reserve与Resize的区别与应用
虽然Reserve和Resize都可以用于调整Vector的内存,但它们的功能和使用场景有所不同。Reserve是用于预分配内存,它可以提高程序的性能,但不会改变Vector的大小。而Resize是用于改变Vector的大小,它会分配或释放内存,并且会改变Vector的元素数量。在选择使用Reserve还是Resize时,我们需要根据实际的需求来决定。如果我们只是想预分配内存,以提高程序的性能,那么应该使用Reserve。如果我们需要改变Vector的元素数量,那么应该使用Resize。原创 2023-07-02 23:24:56 · 1416 阅读 · 1 评论 -
【C++ 包装器类 map】C++ 标准库(std)中的map结构 哈希表(unordered_map)和黑红树(map)教程
哈希表,作为一种特别有效的数据结构,它把 Key 通过一个函数的操作,转换成一个位于特定范围内的整数,这个过程叫做哈希化(Hashing)。哈希化的结果被用作在数组(通常称为哈希表)中索引数据的便捷方式。通过这种方式,我们可以通过O(1)的复杂度找到我们需要的元素,这是一种非常高效的查找方式。原创 2023-06-15 00:17:53 · 461 阅读 · 0 评论 -
【C++ 包装器类 std::tuple】全面入门指南:深入理解并掌握C++ 元组 std::tuple 的实用技巧与应用
元组(Tuple)是一种特殊的数据结构,它可以包含不同类型的元素。在C++中,元组是一个非常强大的工具,它可以用来保存和操作一组不同类型的数据。原创 2023-06-27 13:26:39 · 181 阅读 · 0 评论 -
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
C++智能指针(Smart Pointers)是一种能够实现自动化内存管理的对象。智能指针在析构时会自动释放它所拥有的内存,从而消除了程序员手动管理内存的复杂性。它们是C++标准库的一部分,定义在 `` 头文件中。在C++中,我们通常会说 "Smart pointers automatically manage memory."(智能指针自动管理内存。)当在你的代码中使用动态分配的内存时,使用智能指针可以确保当出现异常或者函数提前返回时,该内存可以被正确地释放。原创 2023-06-17 20:10:45 · 281 阅读 · 0 评论 -
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
std::atomic:这个类模板封装了一个值,并提供了对该值的原子操作。这对于多线程编程中的同步非常有用。原创 2023-06-22 11:16:20 · 356 阅读 · 0 评论 -
【C++ 包装器类 std::optional】全面入门指南:深入理解并掌握C++ std::optional的实用技巧与应用
`std::optional`(标准库中的可选类型)是C++17引入的一个非常有用的模板类,它提供了一种表示"可选"或"可缺失"值的方式。在C++中,我们经常会遇到一些情况,比如函数可能返回一个值,也可能不返回。在这种情况下,我们通常会使用指针或特殊值来表示"无值"的情况,但这种方法往往会引入额外的复杂性和可能的错误。`std::optional`提供了一种更优雅,更安全的方式来处理这种情况。原创 2023-06-22 10:52:12 · 1051 阅读 · 2 评论 -
【C++ 包装器类 std::function 和 函数适配器 std::bind】 C++11 全面的std::function和std::bind的入门使用教程
C++11中的`std::function`和`std::bind`是函数对象的重要组成部分,它们可以用于将函数和参数绑定在一起,形成一个可调用的对象。 `std::function`可以存储任意可调用对象,包括函数指针、函数对象、lambda表达式等,而`std::bind`则可以将函数和参数绑定在一起,形成一个新的可调用对象。它们的使用可以大大简化代码,提高代码的可读性和可维护性。原创 2023-03-16 14:16:52 · 791 阅读 · 0 评论 -
【C++ 函数式编程 】C++中的函数组合:用std::function实现编程艺术
C++中的函数组合:用std::function实现编程艺术原创 2023-05-29 17:12:06 · 1879 阅读 · 1 评论 -
【C++ 函数式编程 】C++中的高阶函数:以std::function优雅地实现回调
高阶函数的一个重要应用就是回调函数(Callback Function)。回调函数是一个在某个事件发生时被调用的函数,它经常被用在异步操作、事件驱动的编程模式和遍历操作等场景。在C++中,`std::function`也经常被用作回调函数,因为它能够提供一种灵活的机制,允许我们自定义或改变函数的行为。原创 2023-05-29 15:31:30 · 2622 阅读 · 0 评论 -
【C++ 包装器类 std::reference_wrapper 】全面指南:深入理解与应用C++ std::reference_wrapper——从基础教程到实际案例分析
【C++ std::reference_wrapper 泡沫精选教程】全面指南:深入理解与应用C++ std::reference_wrapper——从基础教程到实际案例分析原创 2023-06-20 00:13:03 · 549 阅读 · 0 评论