
C++基本知识
文章平均质量分 75
C++程序设计初级学者适用。
暴躁茹
踏未知路,摸索,尝试,不停息。
展开
-
C++中,`assert`断言调式程序用法
C++中的assert宏用于调试时检查条件,定义在<cassert>头文件中。当条件为假时,程序会终止并报错。该宏仅在调试模式生效,发布模式会被忽略。典型用法包括检查变量范围、除数非零等。开发者需注意:assert仅用于调试,不应替代错误处理;避免在断言中使用有副作用的表达式。示例展示了用assert验证数组索引有效性的场景,若索引越界则终止程序。原创 2025-05-28 16:00:28 · 67 阅读 · 0 评论 -
C++中,`friend`关键字的使用
C++中的friend关键字用于授予特定函数或类访问另一个类的私有和保护成员的权限。友元声明可以是单向的,包括友元函数(如displaySecret()访问MyClass的私有成员)和友元类(如FriendClass访问MyClass的私有数据)。关键特性包括不改变原有访问权限、单向性以及不可继承。示例代码展示了友元类的实际应用,但需注意过度使用友元可能破坏封装性。友元关系不能传播,仅作用于直接声明的类之间。原创 2025-05-28 14:27:16 · 229 阅读 · 0 评论 -
C++11 中引入的`final` 关键字作用。
C++中的final关键字主要用于限制继承和重写行为。用于类时,表示该类不可被继承;用于虚函数时,表示该函数不可在派生类中被重写。该特性由C++11引入,能增强代码安全性、明确设计意图,并支持编译器优化。典型应用场景包括防止意外重写关键方法、避免复杂的继承层次结构等。final可与virtual、override等修饰符组合使用,提高代码可读性和健壮性。原创 2025-05-27 19:19:19 · 146 阅读 · 0 评论 -
C++中为什么要使用nullptr而不是null
nullptr是 C++11 引入的一个更现代化、更安全的空指针表示方式,能够显著提高代码的可读性和安全性。相比之下,NULL或0的使用容易导致类型混淆和平台依赖问题。因此,在现代 C++ 编程中,推荐优先使用nullptr。最终结论:使用nullptr是因为其提供了更强的类型安全性、更明确的语义以及更好的跨平台兼容性。原创 2025-04-06 10:04:38 · 305 阅读 · 0 评论 -
C++11:应用constexpr和编译时计算优化代码性能.
通过使用constexpr,我们可以将一些计算任务转移到编译阶段完成,从而提高程序的执行效率。这在处理静态数据结构、模板元编程以及需要频繁访问的数据时特别有用。不过需要注意的是,过度使用constexpr可能会增加编译时间,因此在实际开发中应权衡利弊。原创 2025-03-02 18:57:14 · 204 阅读 · 0 评论 -
C++11引入的一个重要特性:移动语义,提高程序性能和资源管理效率。
移动语义通过右值引用(&&)实现。右值引用是一种特殊的引用类型,它可以绑定到临时对象(也称为右值)。通过移动语义,我们可以将资源从一个对象转移到另一个对象,而不是进行复制。这样,源对象的状态会被设置为未定义状态(通常是默认构造的状态),而目标对象则拥有原本资源的所有权。移动语义是现代C++中的一个重要特性,它显著提高了程序的性能,特别是在处理大型数据结构时。通过合理地使用移动语义,我们可以避免不必要的资源拷贝,从而提高程序的效率和响应速度。原创 2025-01-19 13:35:54 · 178 阅读 · 0 评论 -
C++内联函数inline的使用:C++优化减少函数调用的开销。
内联函数(Inline Function)是一种在C++中使用的优化技术,用于减少函数调用的开销。通常情况下,编译器会在调用函数时生成相应的函数调用指令,这会增加额外的执行时间。而内联函数通过将函数体直接插入到调用该函数的地方,从而避免了函数调用的开销。原创 2025-01-12 18:41:03 · 378 阅读 · 0 评论 -
c++为什么需要虚析构函数?
将析构函数声明为虚函数是处理继承层次结构时的一个重要实践。它确保了即使通过基类指针删除派生类对象,也能正确地调用派生类的析构函数,从而避免资源泄漏和其他潜在问题。原创 2025-01-01 09:27:03 · 420 阅读 · 0 评论 -
C++适配windows和linux下网络编程TCP简单案例
TCP/IP(Transmission Control Protocol/Internet Protocol)协议是互联网的基础协议,包括了TCP(传输控制协议)和IP(互联网协议)等。TCP/IP协议族定义了网络中数据传输的规则,包括了数据包的封装、路由选择、数据传输、错误检测和校正等。原创 2024-08-17 18:20:45 · 822 阅读 · 0 评论 -
C++11 新特性:智能指针的使用:shared_ptr、weak_ptr、unique_ptr的使用,使用案例说明。
C/C++ 为了实现对内存的细粒度的操作,没有设计垃圾收集器。因此,使用 C/C++ 编写项目时,开发人员需要格外注意内存的申请和释放。本文介绍了shared_ptr和weak_ptr源码,分析了它们对内存泄漏的检测方式,并指出它们所存在的不足。希望读者可以通过改进指针算法或 share_ptr 来规避内存泄漏,尽量不要写出连检测算法也无法处理的代码结构。提示:以下是本篇文章正文内容,下面案例可供参考weak_ptr是一种用于解决shared_ptr相互引用时产生死锁问题的智能指针。原创 2023-11-10 20:24:54 · 580 阅读 · 0 评论 -
c语言全局变量(extern)和静态全局变量(static)的使用、拓展作用域(全局、局部等)
c、c++基本知识点:作用域、全局变量(extern)、局部变量等原创 2023-06-12 20:19:27 · 14815 阅读 · 0 评论 -
C++11多线程:单例设计模式共享数据问题分析、解决(c++11)设计多线程。
单例设计模式共享数据问题分析、解决(c++11)设计多线程,本文简单介绍什么是设计模式-单例模式,并采用c++11的语言方式,创建了单例类,采用多线程的方式对问题进行分析和解决。原创 2023-03-05 18:44:36 · 866 阅读 · 0 评论 -
C/C++知识点:静态数据初始化、动态内存数据初始化、new和delete的正确使用、mement初始化数组和结构体-静态内存数据。
C++知识点:静态数据初始化:基本变量、数组、字符串数组、类数组等动态内存数据初始化、new和delete的正确使用、mement初始化数组和结构体-静态内存数据。原创 2023-01-28 17:32:12 · 1075 阅读 · 0 评论 -
C、C++读取数据文件DAT(二进制文件)
通过网上大佬的笔记总结本篇文章,并编译运行,后续会总结出多种读取二进制文件。(1)头文件(2)FILEFILE 是 头文件中的一个结构体,它专门用来保存文件信息。(3)fopen// filename -- 为文件名(包括文件路径). // mode -- 为打开方式,它们都是字符串。// 返回值 -- fopen() 会获取文件信息,包括文件名、文件状态、当前读写位置等,并将这些信息保存到一个 FILE 类型的结构体变量中,然后将该变量的地址返回。;原创 2022-12-21 11:14:51 · 26023 阅读 · 0 评论 -
C++多线程和并发-更新(死锁的产生、几种互斥量上锁的方法(lock()、lock_guard、unique_lock))-2023/2/26
C++多线程和并发-更新(进程与线程的概念、join、detach的使用、创建线程的方法)-2022/11/27提示:以下是本篇文章正文内容程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;实际上这个是主线程在运行,主线程从main()函数返回,则整个进程执行完毕。原创 2022-11-27 22:40:23 · 1289 阅读 · 0 评论 -
C++中STL库中 list 的基本定义和基本使用函数汇总、以及对比其它容器的优缺点。
带着问题去思考:1.什么是序列式容器?2.list怎么使用,有哪些操作?简单的介绍一下C++中STL库序列式容器中的list的基本使用,以及温习一下序列式容器与关联式容器的区别。1. 序列式容器:所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。2. list 的基本定义:list(链表容器):是一个长度可变的、由 T 类型元素组成的序列,它以双向链表的形式组织元素,转载 2022-07-20 19:30:42 · 659 阅读 · 0 评论 -
C++ STL库的 Map的基本定义包括有优点、基本使用函数、什么是关联式容器,相比序列式容器的优点是什么。
基本概念:(1)作为关联式容器的一种,map容器存储的都是pair对象,也就是说pair类模板创建的键值对。其中,各个键值对和值可以是任意的数据类型:(2)map存储多个键值对时,该容器会自动根据各键值对的健大小,按照既定的规则进行排序(升序排序),也可以手动指定排序规则。map容器存储的各个键值对,健的值既不能重复也不能修改。(3)C++11标准中,还为map容器增添了移动构造函数,。当有临时的map对象作为参数,传递给要初始化的map容器时,此时就会调用移动构造函数。C++ map容器包含转载 2022-07-09 15:53:51 · 483 阅读 · 0 评论 -
C++中的结构和类、类的组成、类的五个默认成员、类的析构器、赋值函数、拷贝函数。
C++中的结构和类、类的组成、类的五个默认成员、类的析构器、赋值函数、拷贝函数。原创 2022-05-07 22:56:46 · 464 阅读 · 0 评论 -
C++函数的定义、函数返回值和参数类型、函数重载、重载函数等。
C++函数的定义、函数返回值和参数类型、函数重载、重载函数等。原创 2022-05-03 19:39:58 · 1816 阅读 · 0 评论 -
几种变量的范围(生命周期)、数组、指针、C和C++内存区域。
学习目标:提示:这里可以添加学习目标例如: 一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:周一至周五晚上 7 点—晚上9点周六上午 9 点-上午 11 点周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如: 技术笔记 2 遍 优快云 技术博客 3 篇 习的 vlog 视频 1原创 2022-04-28 20:04:08 · 1856 阅读 · 0 评论 -
C++中各种基本类型的范围。
1.C++中有哪些基本类型对于整数来说,它有有符号和无符号之分;对于实数,无论是单精度还是双精度,都是有符号的(有正有负);布尔类型;只有两值,无所谓有无符号;true|false, 1种;字符类型;包括有无符号;signed(可以省略),2种;短整型;包括有无符号;2种整型;有无符号,2种;长整型;有无符号,2种;长长整型;有无符号,2种;单精度;有符号,1种;双精度;有符号,1种;共计13种2.长度在内存分配时,无论静态还是动态,占几个字节的存储空间;用运算符sizeof获原创 2022-04-24 11:49:16 · 2427 阅读 · 0 评论