自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 cpp自学 day27(—>运算符)

文章摘要: 本文展示了一个基于作用域的智能指针(ScopedPtr)的实现,用于自动管理Entity对象的内存生命周期。代码包含以下核心内容:1) Entity类作为被管理对象,包含构造/析构函数和成员函数;2) ScopedPtr类通过operator->重载提供指针式访问,并在析构时自动释放内存;3) 禁用拷贝构造和赋值运算符确保独占所有权;4) 解释了箭头运算符的重载机制和执行流程;5) 补充了使用nullptr计算结构体成员偏移量的技巧。该实现模拟了unique_ptr的基本行为,展示了智能指

2025-06-08 23:26:23 406

原创 cpp自学 day26(智能指针)

摘要:本文详细解析C++11引入的智能指针机制,重点介绍三种核心类型:unique_ptr(独占所有权,支持移动语义)、shared_ptr(共享所有权,基于引用计数)和weak_ptr(非拥有性引用,解决循环引用问题)。智能指针通过RAII原则自动管理内存,有效防止内存泄漏和野指针。文章对比了make_unique/make_shared与传统new创建方式的优劣,提供典型使用场景示例,并列出各类型常用方法。特别强调使用注意事项,包括避免裸指针混用、循环引用风险等。通过智能指针可提升代码安全性和简洁性,是

2025-06-08 21:37:22 1115

原创 cpp自学 day25

2025-06-08 16:46:36 100

原创 cpp自学 day24(STL初步认识)

C++ 早期缺乏标准化的数据结构和算法库,开发者需要重复实现基础功能。:通过模板技术实现,提高代码复用性和开发效率。:由 Alexander Stepanov 提出并推动成为 C++ 标准的一部分(1994 年正式纳入)。

2025-05-08 15:30:46 390

原创 cpp自学 day23(类模板02)

C++类模板的核心应用需关注继承关系、成员函数实现及友元函数协作。当子类继承模板父类时,须明确指定父类的模板参数类型以确保内存分配,若需灵活指定类型则子类自身也需定义为模板类。类模板的成员函数在类外实现时需严格遵循模板声明规范,通过作用域运算符关联所属类,构造函数推荐使用初始化列表直接初始化成员变量以提升效率。分文件编写类模板时需将声明与实现统一至.hpp文件,避免因延迟实例化特性导致的链接错误。友元函数实现分为类内直接定义和类外分步声明两种,后者需提前前向声明模板类及函数模板,并通过空模板参数标记确保绑定

2025-04-23 16:49:37 890

原创 cpp自学 day22(类模板01)

类模板允许我们定义通用的类,这些类可以针对不同的数据类型进行实例化。当我们创建一个类模板的实例并将其作为参数传递给函数时,有几种不同的方法可以实现这一点。// 1. 即使存在错误语法(如未定义变量),只要不调用就不会报错。2. 参数模板化 --- 将对象中的参数变为模板进行传递。3. 整个类模板化 --- 将这个对象类型模板化进行传递。1. 指定传入的类型 --- 直接显示对象的数据类型。// 2. 支持模板类型相关的延迟编译特性。类模板实例化出的对象,向函数传参的方式。

2025-04-22 10:14:15 399

原创 cpp自学 day21(模板)

C++模板特化技术通过类型特化解决通用模板对自定义类型(如Person类)的局限性。全特化语法template<>显式定义特定类型逻辑,例如myCompare<Person>直接比对对象的m_Name和m_Age属性,突破通用模板无法访问成员变量的限制。该技术优先于通用模板调用,避免冗余条件判断,提升代码维护性,在保持泛型优势的同时实现精准类型适配。其核心价值在于平衡通用性与灵活性,适用于自定义类型比较、STL算法适配(如排序规则)等场景,通过特化版本扩展模板应用边界,成为处理类/结构体专属逻辑的核心方案。

2025-04-21 17:01:24 963

原创 cpp自学 day20(文件操作)

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件的三大类:1. ofstream:写操作2. ifstream:读操作3. fstream:读写操作。

2025-04-07 23:02:44 894

原创 cpp自学 day19(多态)

👉 就像「按F1键」:在Word弹出帮助文档,在PS弹出画笔设置,​。

2025-04-05 17:48:26 887

原创 cpp自学 day18(继承)

继承的好处:减少重复代码语法: class 子类 : 继承方式 父类派生类中的成员,包含两大部分: 一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。

2025-04-01 15:46:33 932

原创 cpp自学 day17(运算符重载)

何时使用全局函数重载运算符以及何时使用成员函数重载运算符运算符类型全局函数重载成员函数重载备注一元运算符是是如operator++(前置和后置)和operator!二元运算符是否如operator+operator-,当操作数之一不是类类型时使用全局函数输出运算符是否operator<<用于输出流输入运算符是否operator>>用于输入流下标运算符是否operator[]用于访问数组或容器元素函数调用运算符是否operator()用于类实例的函数调用。

2025-03-27 15:30:21 1493

原创 cpp自学 day16(友元)

在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员。

2025-03-25 11:13:58 1520

原创 cpp自学 day15(类和对象——对象模型和this指针)

​概念​核心要点​空对象内存占1字节,保证对象有唯一地址。​this指针隐含指针,指向调用者对象;支持链式编程和解决命名冲突。​常函数用const修饰,禁止修改成员变量(mutable例外)。​常对象用const修饰,只能调用常函数,禁止修改非mutable成员。关联记忆this->明确指向 → 常函数锁成员 → 常对象限调用 → mutable破约束。

2025-03-21 17:41:33 800

原创 cpp自学 day14(类和对象——对象的初始化和清理)

​构造函数调用规则用户定义有参构造 → 保留默认拷贝构造用户定义拷贝构造 → 不生成其他默认构造​对象成员构造顺序成员对象构造 → 本类构造析构顺序相反(后进先出)​匿名对象生命周期Person(10);// 本行结束立即调用析构​深浅拷贝选择原则含指针/堆资源 → 必须深拷贝基础类型 → 可用浅拷贝。

2025-03-18 15:13:58 1258

原创 cpp自学 day13(类和对象——封装)

将属性和行为作为一个整体,用来表现生活中的事物。

2025-03-14 17:35:21 292

原创 cpp自学 day12 (默认参数-占位参数-重载)

C++核心编程的默认参数、占位参数、重载

2025-03-12 16:50:46 720

原创 cpp自学 day11 (引用)

作用:给变量起别名语法:数据类型 &别名 = 原名。

2025-03-10 20:33:36 1026

原创 cpp自学 day10 (程序内存模型-new操作符)

用new操作符在堆区开辟数据,该数据由程序员手动开辟,手动释放(释放操作符delete)

2025-03-06 15:19:50 215

原创 cpp自学 day9 (程序内存模型)

见网址:如何提交代码到gittee(码云)详细教程(小白专属) - 知乎。

2025-03-06 09:18:38 325

原创 cpp自学 day7、8(周末)

CPP程序执行时,内存分为四个区域。

2025-03-04 00:05:30 159

原创 cpp自学 day6

号用于字符串时,为字符串拼接运算符,表示把+号前后的两个字符串拼接成一个新的字符串。添加随机数种子,利用当前系统时间生成随机数,防止每次生成的随机数都一样。数组名在大多数情况下会被解释为指向数组首元素的指针,但在某些情况下(如。数组名不仅仅是一个地址,它还有这代表数组首地址以外的其它性质。数组作为函数参数传递时,实际上传递的是数组的首地址。号前后的两个字符串拼接成一个新的字符串。时,为字符串拼接运算符,表示把。表示生成的数在0-100。

2025-03-01 16:17:55 394

原创 cpp自学 day5

结构体定义时,无法省略 struct student;结构体变量创建时,结构体可以省略 student s1;

2025-02-27 19:50:14 421

原创 cpp自学 day4

函数 值传递:不改变实参指针 地址传递:改变实参将{4,2,8,0,5,7,1,3,9}中的元素进行升序排序。

2025-02-27 10:08:08 170

原创 cpp自学 day3

因为是整形 所以数组元素后续地址值与首地址差4,则指针往后移动4个字节就可以,指到下一个元素。32位操作系统 sizeof(int */float */double */char *)都是占4个字节。//表示数组首地址。常量指针:const int *p = &a;指针常量:int const *p = &a;使用指针:*p 表示找到指针地址值对应的数据。个人理解:地址值可以改,但指向的值不能更改。int * 就是一个类型,指针类型。指针:用于保存变量的地址值。

2025-02-26 00:23:00 246

原创 cpp自学 day2(2)

如果函数不需要返回值,则在声明函数的时候void ,return(可写可不写)函数的声明:函数写在主函数以后,可以在主函数前面写个声明告诉其函数的存在。三目运算符:a>b?a:b,a大于b返回a,否则返回b。例:int max (int a,int b);system("pause")按任意键继续。头文件写声明 源文件写定义。

2025-02-25 10:48:18 177

原创 cpp自学 day2(1)

sizeof:sizeof(int/arr/double)统计数据类型所占内存空间。数组占用空间根据其中元素类型而定。continue:在循环中跳过后面的语句,继续循环。例:goto FLAG;数组:数组名是常量,不可赋值。goto 标志:强制跳转。

2025-02-24 17:19:34 205

原创 cpp自学 day1

后置递增 先运算 再让变量+1 (运算结束后再让对应变量+1。cout << "输出结果为:" <<a<<前置递增 先让变量+1 再进行运算。给字符a输入值:cin >> a。a=0 a+=2 a=2 加等于。字符串、布尔类型同理。

2025-02-24 10:46:19 106

空空如也

空空如也

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

TA关注的人

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