自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 问答 (2)
  • 收藏
  • 关注

原创 需要拷贝操作的类也需要赋值操作,反之亦然

在C++中,确实存在一种普遍的观点,即如果一个类需要自定义拷贝构造函数(copy constructor)来处理对象的拷贝,那么它很可能也需要自定义拷贝赋值运算符(copy assignment operator)来处理对象的赋值。反之亦然,如果一个类需要自定义拷贝赋值运算符,那么它也很可能需要自定义拷贝构造函数。这是因为这两个操作通常都涉及到对象内部资源的复制或管理,而它们之间的需求往往是相似的。然而,需要注意的是,这并不是一个绝对的规则。

2024-07-19 09:47:52 252

原创 C++ 需要析构函数的类也需要拷贝和赋值操作

防止浅拷贝:默认的拷贝构造函数和拷贝赋值运算符执行的是浅拷贝,即只复制对象成员变量的值。如果类包含指向动态分配内存的指针,浅拷贝会导致两个对象指向同一块内存,从而在销毁时发生重复释放的错误(double-free),或者在一个对象销毁后,另一个对象访问已释放的内存(use-after-free)。深拷贝:为了安全地复制对象,需要实现深拷贝,即创建资源的新副本,并将新副本的地址赋给新对象的指针成员。资源所有权:在某些情况下,类的设计可能要求对象对资源拥有唯一所有权(如智能指针)。

2024-07-19 09:36:07 302

原创 三/五法则

C++的三五法则是类设计中的一个重要原则,它帮助开发者理解和管理类的拷贝控制操作。通过遵循这些规则,开发者可以避免常见的资源泄露、重复释放等问题,并优化程序的性能。在实际开发中,应根据类的具体需求来决定是否需要自定义这些特殊的成员函数。

2024-07-19 09:27:29 262

原创 struct和class区别

总结来说,struct和class在类型、继承性、构造函数、内存管理、修饰符和特性、初始化、参数传递、职能和应用场景等方面存在显著的差异。这些差异使得它们在不同的编程场景和需求下有不同的适用性和优势。struct和class在编程中确实存在显著的差异,这些差异主要体现在它们的类型、继承性、构造函数、内存管理、以及使用场景等方面。转载自 百度 文言一心。

2024-06-29 20:03:58 174

原创 C++ Primer 421页 我们不能将 StrBlobPtr 绑定到一个 const StrBlob 对象。这个限制是由于构造函数接受一个非 const StrBlob 对象的引用而导致的

对象,你期望的是任何指向它的指针或引用都不应该能够修改这个对象。在实际应用中,你可能还需要考虑其他因素,比如线程安全、异常安全性等。的,这也将是未定义的行为。提供一个额外的构造函数,该构造函数接受一个。这个构造函数可以创建一个只能读取的。正确性的要求,因为它仍然持有一个到非。提供更严格的限制,以确保它不会违反。引用,那么它确实不能用于指向一个。对象不能被修改,因此如果你有一个。对象中存储的字符串的引用。,那么它内部可能会修改传入的。这个类,它通常被设计为与。转载自 百度 文言一心。的构造函数接受一个非。

2024-06-29 19:32:40 197

原创 glibcxx、glibc、libstdc++、GCC和g++之间的关系

这些组件在软件开发中各自扮演不同的角色,但彼此之间相互依赖,共同构成了GNU/Linux和其他类Unix系统中软件开发的基础。

2024-06-20 21:10:32 356

原创 C++ 已经有auto了,为什么还需要尾置返回类型

auto 与 尾置返回类型

2024-05-12 16:08:07 417

原创 C++开发Vim常用配置

以上是一些常用的Vim配置建议,你可以根据自己的需求和习惯进行调整。记得将这些配置保存在你的Vim配置文件(通常是。)中,以便在Vim启动时自动加载。以上内容来自百度文心一言。

2024-05-12 08:04:07 301

原创 git 撤回某次commit

要撤回某次commit,你可以使用git revert命令。这将创建一个新的commit,它将撤消指定commit所做的更改。请注意,使用git reset --hard命令会丢失所有未提交的更改,所以在使用前请确保你不需要这些更改。在这里,^符号表示commit的父提交。git 撤回某次commit。提示:AI自动生成,仅供参考。

2024-05-11 09:01:03 433 1

原创 lldb常用调试命令

lldb常用命令

2024-05-10 07:27:26 370

原创 MacOS 本机状态常用查询指令

请注意,上述命令可能因 macOS 版本的不同而有所差异。如果你在使用过程中遇到问题,建议查阅相关的 macOS 文档或寻求专业的技术支持。在 macOS 的终端中,你可以使用多种命令来查询本机的状态信息。(如果你在使用笔记本电脑)

2024-05-01 10:44:23 235

原创 C++编译 error:‘virtual xxxx‘ is protected

在C++中,当编译器遇到一个错误信息提示“‘virtual xxxx’ is protected”时,这通常意味着你正在尝试从一个派生类的成员函数中调用一个基类中被声明为protected的虚函数。为了解决这个编译错误,你需要确保你的派生类中的函数正确地继承并实现了基类中声明为protected的虚函数。如果你需要从外部访问这个虚函数,你可能需要在基类中提供一个public的非虚拟接口来调用它,或者在派生类中提供一个public的虚拟接口来覆盖它。// 调用protected的虚函数。

2024-04-28 10:57:18 272

原创 计算机网络常识汇总

CUDA解码技术直接调用GPU中的流处理器进行解码运算,这相较于之前调用GPU中相应的专用视频解码模块,大大提升了计算效率。在实际应用中,无论是深度学习模型的训练,还是中间变量和计算过程的处理,都可以放在GPU上以充分利用硬件加速。CUDA提供了一种可扩展于C、C++、Python和Fortran等语言的编码接口,并行化后的代码能够在NVIDIA GPU上运行,以大幅加速应用程序。随着技术的不断发展和项目的复杂性增加,开发者还需要不断学习和更新自己的知识体系,以适应新的挑战和需求。

2024-04-18 13:38:10 511 1

原创 Linux C++开发需要掌握一系列的技能

这些技能构成了Linux C++开发的核心能力。随着技术的不断发展和项目的复杂性增加,开发者还需要不断学习和更新自己的知识体系,以适应新的挑战和需求。Linux C++开发需要掌握一系列的技能,这些技能涵盖了编程语言、系统编程、网络编程、开发工具等多个方面。

2024-04-18 13:35:29 270 2

原创 C++常识汇总

重定义通常指的是在C++中,当派生类继承基类时,如果派生类中的成员与基类中的成员具有相同的名称,则派生类的成员会隐藏基类的成员。这被称为名称隐藏或重定义。在这种情况下,通过派生类对象访问该成员时,将访问派生类中的成员而不是基类中的成员。要访问基类中被隐藏的成员,需要使用作用域解析运算符(::)。需要注意的是,重定义与重写不同。重写是子类对父类方法的扩展或修改,而重定义则是派生类成员隐藏了基类成员。重载是在同一作用域内使用相同的函数名但不同的参数列表来定义多个函数。

2024-04-18 11:15:32 636 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除