- 博客(29)
- 收藏
- 关注
原创 C++ 面向对象 - 对象定义方法汇总
本文总结了C++对象定义的多种方法,主要分为栈上定义和堆上定义两大类。栈上定义包括调用无参构造函数、有参构造函数和拷贝构造函数三种方式,详细介绍了每种方式的语法特点和注意事项。堆上定义主要通过new操作符实现,同样支持三种构造函数的调用方式。文章还强调了对象定义与赋值操作的区别,并提供了综合示例代码。对于C++开发者理解对象创建过程具有实用参考价值。
2025-07-11 21:21:29
429
1
原创 C++ 面向对象 - 默认值与常量成员
C++中的默认值和常量成员是提升代码安全性和灵活性的重要特性。默认值允许函数参数、类成员等在没有显式赋值时使用预设值,需遵循从右向左连续定义的原则,避免与函数重载冲突。常量成员分为不可修改的成员变量和保证对象状态不变的成员函数,常量变量必须在初始化列表或默认值中设置,而常量函数只能访问不能修改对象状态(mutable变量除外)。合理使用这些特性可以使代码更健壮、可维护,同时减少潜在错误。
2025-07-11 17:53:52
1093
原创 C++文件操作
C++文件操作主要通过<fstream>库实现,包含ifstream(读)、ofstream(写)和fstream(读写)三个类。基本操作步骤包括:打开文件(需检查是否成功)、读写数据(文本或二进制模式)、关闭文件。文件打开时可指定多种模式(如追加、二进制等)。二进制文件操作需使用write()和read()方法,并可通过文件指针控制读写位置。注意事项包括文件路径、权限、状态检查和资源释放等。掌握这些知识可实现C++程序与文件系统的高效交互。
2025-06-29 23:40:48
585
原创 C++ 格式化输入输出
摘要:C++格式化输入输出主要通过流操纵符和成员函数实现,需包含<iomanip>头文件。格式化输出包括设置整数进制、控制浮点数精度、字段宽度和对齐方式等操作。格式化输入需注意错误处理和缓冲区清理,建议使用getline读取字符串。常用的流操纵符有setw、setprecision、hex/dec/oct等,使用时需注意恢复默认设置。掌握这些技巧能提升程序的交互性和数据可读性。
2025-06-29 23:36:42
847
原创 C++泛型编程2 - 类模板
C++类模板是泛型编程的核心技术,允许创建适用于多种数据类型的通用类。从基础概念到高级应用,类模板具有以下特性:1)通过模板参数支持多种类型,避免重复代码;2)支持默认类型参数和非类型参数;3)可以进行全特化和偏特化;4)每个模板实例化拥有独立的静态成员;5)支持继承和友元关系。使用时需注意类模板只能显式实例化,成员函数可在类外实现,并遵循模板声明一致性原则。最佳实践包括分离声明与实现、防止模板膨胀和使用static_assert提供清晰错误信息。类模板极大提高了代码复用性和灵活性。
2025-06-28 21:44:19
1155
原创 C++泛型编程1 - 函数模板
C++函数模板完整教程摘要: 函数模板是C++泛型编程的核心,允许编写与数据类型无关的通用函数。通过template <typename T>声明模板,将数据类型参数化,编译器在编译时自动生成特定版本。模板支持多类型参数、默认类型参数和非类型参数,可进行全特化处理。与普通函数共存时,遵循特定重载规则:普通函数优先,模板函数在更匹配时被选用。最佳实践包括将模板定义放在头文件、确保操作对所有类型有效、遵循DRY原则等。典型应用包括通用交换函数、数组排序和类型组合运算。模板提高了代码复用性和维护性。
2025-06-28 20:17:50
1383
原创 C++扩展 - 关键字应用 - decltype
摘要:decltype是C++11引入的关键字,用于编译期推导表达式类型。它能精确保持变量或表达式的原始类型特性(包括引用和const限定),主要应用于模板函数返回类型推导、lambda表达式、类型别名、SFINAE和元编程等场景。C++14引入decltype(auto)进一步简化使用。相比auto,decltype能保留引用和const限定,是泛型编程的重要工具。文章详细解析了decltype的推导规则、应用场景、高级用法及注意事项,并对比了其他类型推导方式的特点。
2025-06-28 18:29:39
508
原创 C++扩展 - 函数模板高级 - 返回类型自动推导
本文介绍了C++函数模板中自动推导返回类型的技术,重点解析了decltype(T1() + T2())的语法和原理。文章通过代码示例展示了如何利用decltype在编译时推导表达式类型,实现返回类型的自动确定。同时对比了传统方法、C++14的auto返回和C++20概念约束等不同实现方式,分析了这种技术的类型安全性、代码简洁性等优势。最后指出了使用注意事项和扩展应用场景,说明该技术在现代C++泛型编程中的重要价值。
2025-06-28 18:21:40
329
原创 C++面向对象 - 多态
本文全面介绍了C++中的多态特性,包括两种实现方式:静态多态(函数重载和模板)和动态多态(虚函数)。详细讲解了虚函数表原理、纯虚函数与抽象类、虚析构函数的重要性,以及C++11新增的override和final关键字用法。文章通过多个代码示例展示了多态的实际应用,包括动物叫声、图形计算等场景,并强调了多态在提升代码灵活性和可维护性方面的优势。最后总结了多态作为面向对象编程核心概念的关键要点。
2025-06-27 23:58:08
805
原创 C++面向对象 - 继承
本文全面介绍了C++中的继承机制,包括:继承的基本概念(基类/派生类、IS-A关系)和语法;4种继承类型(单继承、多继承、多级继承和层次继承);3种访问控制方式(公有、保护、私有)及其权限影响;构造函数调用顺序和派生类构造方法;函数重写、虚函数与多态的实现;多重继承的菱形问题及虚继承解决方案;向上/向下类型转换;特殊成员函数的处理;以及继承的最佳实践(优先公有继承、避免过度使用)。通过代码示例详细展示了各类继承场景的实现方式。
2025-06-27 23:43:42
606
原创 Qt 安装与项目创建
Qt是一款跨平台的C++开发库,主要用于图形界面(GUI)开发,也支持命令行程序。它具有跨平台性、面向对象设计、丰富API、完善文档和高性能图形渲染等优势。文章详细介绍了Qt的特点、资源下载方式(官网地址)、安装注意事项(路径选择、组件选择等)以及使用Qt Creator创建新项目的完整流程(包括项目类型选择、路径设置、构建系统配置等),最终生成一个基本的GUI程序框架并运行。
2025-06-27 00:07:34
913
原创 C++ 面向对象知识(4)- 友元与运算符重载
本文介绍了C++中的友元机制和运算符重载两大核心特性。在友元部分,详细讲解了友元函数、友元类和友元成员函数的定义与使用方法,分析了友元的优缺点及适用场景,强调应谨慎使用以避免破坏封装性。在运算符重载部分,系统阐述了重载的基本语法和两种实现方式(成员函数和全局函数),重点说明了不同运算符的返回值类型选择原则,并列举了可重载和不可重载的运算符。文章通过复数类的示例代码展示了+、<<等运算符的重载实现,同时总结了运算符重载的注意事项,包括参数类型选择、返回值类型确定等关键知识点。这两项特性都能增强代码
2025-06-24 18:54:20
311
原创 C++ 面向对象知识(3)- 静态成员与单例模式
摘要:静态成员分为变量和函数两种类型,属于类而非对象。静态成员变量需在类外初始化,所有对象共享;静态成员函数无this指针,只能访问静态成员。单例模式利用静态成员实现全局唯一实例,包含懒汉式和饿汉式两种实现方式。静态成员遵循访问控制规则,可被继承且子父类共享同一静态成员。静态成员常用于对象计数、共享配置等场景。(149字)
2025-06-24 03:48:11
293
原创 C++ 面向对象知识(2) - 封装二
本文详细介绍了C++中的构造函数和析构函数。构造函数主要用于对象初始化,包括无参构造、带参构造、拷贝构造等类型,支持显式默认化(=default)和禁用(=delete)。析构函数用于对象销毁时的资源释放,具有特定的命名规则和自动调用特性。文章还讲解了初始化列表、委托构造、显式基类构造调用等高级用法,并强调了构造/析构函数在资源管理中的重要性。通过多个具体代码示例,阐述了不同场景下的构造/析构函数定义和使用方法,包括动态内存管理、文件处理等实际应用案例。
2025-06-24 03:23:34
367
原创 C++ 基础知识 - 变量命名法
变量命名广泛应用的四种方法:全大写命名、下划线命名、驼峰命名和匈牙利命名。C++风格的命名方法:大小驼峰命名、下划线命名和全大写命名。
2025-06-21 13:18:59
642
原创 C++基础知识 - 匿名函数
C++11引入的匿名函数(lambda表达式)是一种无需单独声明的临时函数。它支持值捕获和引用捕获,可以指定默认捕获方式,也可单独控制变量捕获行为。匿名函数常用于STL算法、回调函数等场景,需注意避免引用捕获导致的悬挂引用问题。C++14新增了初始化捕获特性,进一步增强了灵活性。关键特性包括:捕获外部变量、mutable修改副本值、指定返回类型等。
2025-06-21 12:57:16
1030
原创 C++ 面向对象知识(1) - 封装一
本文摘要: C++面向对象编程通过类和对象实现数据与操作的封装。类(class)将成员变量(属性)和成员函数(方法)封装在一起,对外隐藏内部实现。对象通过成员运算符(.)访问成员,对象指针使用(->)。类包含三种访问权限(private/protected/public)控制成员可见性,默认private。this指针用于区分成员与局部变量。相比C语言的面向过程编程,面向对象降低了程序复杂度,提高了代码可读性和安全性。示例代码演示了类定义、对象创建、访问权限设置及this指针的使用方法。
2025-06-12 00:03:49
929
原创 C++基础知识
本文总结了C++与C语言共通的基础知识,主要包括:1) 注释方式(单行//和多行/**/);2) 32个核心关键字分类(数据类型、控制流、函数等);3) 数据类型体系(基本类型和复合类型);4) 两种常量定义方法(宏常量和const);5) 变量定义与声明;6) 8类运算符及其用法;7) 三大流程控制结构(选择、循环、跳转)。这些内容是C++继承自C语言的核心语法,为后续面向对象编程奠定基础。(150字)
2025-06-07 23:53:59
296
原创 第一章 用tkinter画画
本文为python 的 tkinter 模块入门教程,不同于其他的入门教程,本文以一个全新的角度和案例激发学者兴趣,采用学思结合的方式,通过实践使学者逐步熟悉 tkinter 框架。
2022-05-18 09:00:00
255
原创 Pycharm 文件模板
Pytharm 中可以自定义代码文件模板。设置位置:Settings >> Editor >> File and Code Templates可设置变量:# -*- coding: utf-8 -*-""" 项目名称: $PROJECT_NAME 文件名: ${NAME}.py 电脑用户名: $USER 使用软件: $PRODUCT_NAME 创建时的系统日期: $DATE 创建时的系统时间:$TIME
2021-04-24 20:48:00
358
原创 Python变量的动态创建
Python变量的动态创建动态地创建变量可以使用 globals() 和 locals() 来实现。这两个对象以字典的形式分别保存着系统的静态变量和局部变量。所以只要将要创建的变量加入这两个字典中的任一个,就实现了变量的动态创建。>>> ls = ['name','无奇']>>> i=21>>> globals()[ls[0]+str(i)]=ls[1]>>> name21'无奇'动态变量的应用。最典型的就是pyt
2021-04-06 23:46:45
2655
原创 获取Python变量的变量名
Python获取变量的变量名locals() 是 python 中的内置方法其返回一个保存着当前运行空间的资料。>>> a=1>>> for k,v in locals().items():... print(k, v)... # 第一次执行总是报错,再输入一次就好了__name__ __main__Traceback (most recent call last): File "<input>", line 1, in <
2021-04-06 20:21:37
5975
原创 Python虚拟环境
Python创建虚拟环境的方法有多种。我知道的有三种,分别是:virtulenvvenvpipenv一、virtualenv1、安装virtualenv、virtualenvwrapper-winvirtualenv是最常见的虚拟环境包,需要手动下载,支持python2和python3。为了方便管理虚拟环境,通常还会下载虚拟环境管理工具包:virtualenvwrapper (Linux版本)virtualenvwrapper-win (windows版本)在win.
2021-01-22 17:03:42
180
原创 钢的热处理
钢的热处理热处理温度最终组织作用完全退火Ac3A_{c3}Ac3+(30~50)铁素体+珠光体等温退火Ac3A_{c3}Ac3+(30~50)珠光体球化退火Ac1A_{c1}Ac1+(20~30)球状珠光体使珠光体球化,降低硬度、提高塑性、改善切削加工性能和力学性能。不完全退火Ac1A_{c1}Ac1~(Ac3A_{c3}Ac3/AcmA_{cm}Acm)铁素体/渗碳体+珠光体增大珠光体层片间距,以消除内应力、降低硬度。去
2020-12-15 11:49:47
661
原创 极限与配合
极限与配合术语及概念公称尺寸(基本尺寸)实际尺寸极限尺寸实际偏差极限偏差尺寸公差(Th, Ts)尺寸公差带图配合间隙与过盈配合的种类1. 间隙配合2. 过盈配合3. 过渡配合配合公差(T~f~)公差与配合国家标准标准公差系列公差单位:公差等级基本偏差系列基本偏差基本偏差代号孔轴公差带代号、公差带标注、配合代号公差带代号公差带表示配合代号术语及概念公称尺寸(基本尺寸)设计时给定的尺寸符号:孔(D)轴(d)实际尺寸通过测量所得的尺寸符号:孔(Da)轴(da)极限尺寸限制实际尺寸的变化
2020-11-22 20:17:42
4887
原创 互换性与标准化
互换性一、 互换性定义分类作用主要内容二、标准化一、 互换性定义机械产品中的同一规格的一批零件或部件,任取其中一件,不需作任何挑选、调整或辅助加工就能进行装配,并能保证满足机械产品的使用性能要求的一种特性。分类分类几何参数互换零部件的尺寸、形状、位置、表面质量等几何参数具有互换性功能互换零部件的物理性能、化学性能和力学性能具有互换性按互换性程度分:完全互换性(绝对互换性)零件在装配或更换时,不需要选择、调整或辅助加工不完全互换性(有限互换性)
2020-11-22 13:31:47
2743
原创 外部中断
外部中断文章目录外部中断硬件控制外部中断矢量外部中断控制寄存器外部中断控制位软件控制外部中断0初始化方法外部中断1初始化方法外部中断程序框架示例P3.2口脉冲输入计数硬件控制外部中断矢量中断源名称中断源地址RAM中断矢量ROMINT0P3.2 (0B2H)0003HINT1P3.3 (0B3H)0013H外部中断控制寄存器地址A8HAFHAAHA8H名称IEEAEX1EX0
2020-11-20 12:41:42
4243
版本控制Git分布式版本控制系统入门教程:从基础概念到远程仓库操作全流程解析
2025-06-25
这是一个系统学习Django REST framework(DRF)的教程课程 课程内容涵盖了Web前后端分离架构、RESTful API设计规范,以及Django REST framework框架
2025-06-25
这是一套系统完整的Python爬虫学习课程离线网页,分为**入门、提高、扩展阅读**三大模块,由浅入深覆盖爬虫技术全栈内容
2025-06-25
MongoDB数据库安装和完整命令详解教程
2025-06-25
本资源是Redis数据库安装和操作教程,教程是md文件,推荐使用typora软件打开 Redis是一个开源的、高性能的键值对(key-value)存储数据库,支持多种数据结构
2025-06-25
这是一份系统的Python Web框架学习指南,全面覆盖了Django框架的核心要点 内容从框架介绍、工程搭建开始,逐步深入到模板系统、数据库操作等高级功能 重点讲解了Django的请求响应机制、路由
2025-06-25
C++高级教程PPT(面向对象、设计模式、文件读写、数据库、模板、容器)
2025-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅