- 博客(14)
- 收藏
- 关注
原创 C++面向对象编程:栈的核心操作与应用详解
栈以其简洁的先进后出逻辑和高效的pushpoptop操作,成为计算机科学中不可或缺的基础数据结构之一。
2025-12-03 21:56:59
685
原创 C++面向对象编程:继承详解
继承方式决定了基类成员在派生类中的访问权限级别。它会影响派生类内部以及通过派生类对象访问这些成员的权限。静态成员也遵循同名成员隐藏的规则。
2025-12-02 22:40:14
1459
原创 C++面向对象编程:运算符重载详解
这些默认函数在简单场景下工作正常,但当类的属性指向堆区内存时,默认赋值运算符会导致浅拷贝问题:多个对象可能共享同一块内存,析构时引发重复释放错误,造成未定义行为。在C++中,重载赋值运算符通常需要在类内定义,因为标准要求它必须是成员函数(类外重载不适用)。(复合赋值)运算符的重载实现,包括类内(成员函数)和类外(友元函数或全局函数)两种方式。重载时,可以选择类内或类外实现。类作为示例,该类包含高度(height)、宽度(width)和长度(length)属性。重载时,类内实现更常见,但类外也可行。
2025-12-01 23:28:58
1373
原创 C++面向对象编程:友元详解
将另一个类声明为友元,该类的所有成员函数均可访问原类的私有成员。适用于两个类有紧密关联,需要共享数据时。:将一个全局函数声明为类的友元,该函数可直接访问类的私有成员。适用于单个独立函数需要访问私有数据的情况。友元有三种常见实现形式:全局函数做友元、类做友元和成员函数做友元。每种方式均有适用场景,下面逐一说明。:仅将另一个类的特定成员函数声明为友元,而非整个类。这提供了更精细的访问控制,减少封装破坏。这在某些特定场景下很有用,例如当多个类需要紧密协作时。友元是C++中的一种机制,通过关键字。
2025-11-26 08:00:00
371
原创 C++面向对象编程:Map与unordered_map详解
本总结将系统介绍map和的用法、区别、操作及底层原理,帮助您全面理解这两种数据结构。目录Map 和 unordered_map 的使用总结一、Map 和 unordered_map 的基本概念与区别二、键值对插入操作1. 使用 [] 运算符2. 使用 insert() 方法三、迭代器的使用1. 基本操作2. 遍历方式四、查找操作五、哈希表的基础原理1. 基本概念2. 哈希冲突解决方案六、完整代码示例整合七、总结与建议核心要点map有序,查询 O(\log n);无序,查询平均 O(1)。插入用[]或。
2025-11-25 21:03:04
902
原创 C++面向对象编程:静态变量详解
以上内容全面总结了静态变量、静态成员、成员存储、空指针访问和const修饰成员函数的概念。静态变量和成员用于全局状态管理,提高效率但需注意线程安全。成员存储分开优化内存,对象大小仅含非静态成员。空指针访问需健壮性检查,避免UB。const修饰增强安全性,常函数确保对象不变性。
2025-11-24 00:37:03
1397
原创 C++面向对象编程:构造函数初始化参数列表详解
核心要点:初始化列表是C++构造函数中初始化成员的高效方式,尤其对于const、引用和对象成员。它避免了赋值开销,确保了正确初始化顺序。最佳实践优先使用初始化列表,而非构造函数体中的赋值。对于const和引用成员,必须在初始化列表中初始化。注意成员初始化顺序(按声明顺序),避免依赖未初始化的成员。在对象成员场景下,初始化列表传递参数可保证正确构造。常见错误:忽略初始化列表可能导致编译错误(如const未初始化)或运行时未定义行为(如示例三)。
2025-11-23 08:00:00
903
原创 C++面向对象编程:拷贝构造函数详解
功能:用于基于现有对象创建新对象。应用场景:常见于值传递参数和返回值。练习:Person和Product类展示了基础实现和自定义逻辑。深拷贝与浅拷贝:关键在资源管理,深拷贝避免内存错误,导致内存泄漏。
2025-11-22 08:00:00
772
原创 C++:七大排序算法全面解析
O(n²)级别:选择排序、冒泡排序、插入排序。适用于小规模数据或部分有序数据,其中插入排序在接近有序时效率最高(接近O(n))。O(n log n)级别:堆排序、快速排序、归并排序。适合大规模数据,快速排序平均性能最优,但最坏情况退化为O(n²);堆排序稳定在O(n log n);归并排序稳定但需额外空间。O(n)级别:计数排序(桶排)。仅适用于整数且范围较小的数据,空间消耗与数据范围相关。
2025-11-20 23:29:03
1313
原创 C++面向对象编程:this指针与对象初始化和清理详解
指针是一个隐含的指针参数,存在于每个成员函数中(由编译器自动添加)。它指向当前调用该函数的对象,用于区分同名的形参和成员变量。将从基本数据类型和类/结构体两个方面总结其用法、注意事项,并提供整合后的代码示例。创建一个银行账户类,包含账号和余额,使用构造函数初始化,并提供存钱、取钱功能。定义一个学生类,使用构造函数动态分配年龄的内存,析构函数释放内存。定义一个矩形类,包含宽度和高度,使用构造函数初始化,并计算面积。析构函数在对象销毁时自动调用,用于释放资源(如动态分配的内存)。在C++中,堆区内存是通过。
2025-11-19 22:57:24
1000
原创 C++面向对象编程:封装特性详解
封装是C++面向对象三大特性之一(封装、继承、多态),它将对象的属性和行为捆绑在一起,并提供访问控制机制。封装的核心是将属性和行为整合为一个整体,以模拟现实世界中的对象。同时,它还涉及对属性和行为的访问权限控制。封装允许将对象的属性(数据)和行为(函数)定义在一个类中,从而表现生活中的事物。封装允许通过访问权限限制属性和行为的可见性,确保数据安全。将成员属性设置为私有(
2025-11-19 22:38:49
676
原创 C++面向对象编程:函数重载详解
1.1 作用:使函数名可重复使用,简化接口设计。1.2 满足条件同一个作用域下。函数名相同。函数参数类型不同、或个数不同、或顺序不同。注:函数返回值不作为重载条件(返回值类型不同不构成重载)。示例fun(1);// 输出: int numfun(1,2);// 输出: int,intfun(1,2.2);// 输出: int,doublefun(1.1,2);// 输出: double,intreturn 0;函数默认参数。
2025-11-18 08:00:00
1152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅