【C++核心编程】
文章平均质量分 92
本人在学习C++时整理的笔记
我要成为C++领域大神
code
展开
-
【C++核心编程】菱形继承&虚基类
🔥❤️如果继承的层次很多、关系很复杂,程序的编写、调试和维护工作都会变得更加困难,由于这个原因,C++之后的很多面向对象的编程语言,例如Java,C#等,都不支持多继承。虚基类是C++中的一种机制,可以解决多重继承时的"菱形继承"问题。通过使用虚基类,C++ 提供了一种方式,使得。不提倡使用多继承,只有在比较简单和不出现二义性的情况时才使用多继承,能用单一继承解决的问题就不要使用多继承。有了多继承,就存在菱形继承,有了菱形继承就有虚继承,增加了复杂性。类只会有一个共享的副本,从而解决菱形继承问题。原创 2024-06-15 10:57:03 · 678 阅读 · 0 评论 -
探秘正则表达式:从grep命令到C语言
🔥❤️正则表达式(Regular Expression,简称 regex 或 regexp)是一种用来匹配字符串中字符模式的工具,经典的数据处理技术,可以实现数据查询匹配、数据清洗等等。正则表达式是一种强大的字符串处理工具,广泛应用于文本搜索、替换和处理任务。正则表达式的语法由一系列特殊字符和普通字符组成,通过这些字符的组合,可以精确地定义字符串的匹配模式。原创 2024-06-14 11:15:57 · 1422 阅读 · 0 评论 -
【C++核心编程】函数模版&类模版
🔥❤️C++除了有面向对象的编程思想,还有的思想,泛型编程可以体现在C++的模版上。是一种强大的泛型编程工具,允许我们去编写通用的类和函数,以支持多种数据类型,而无需重复编写代码。模板可以分为和两种主要类型。在C++98添加关键字typename之前,C++使用关键字class来创建模板。如果考虑向后兼容,函数模板应使用typename,而不是class。函数模板实例化可以让编译器自动推导,也可以在调用的代码中显式的指定。原创 2024-06-14 09:48:56 · 1098 阅读 · 0 评论 -
【C++核心编程】拷贝构造&赋值运算符&深拷贝浅拷贝
🔥❤️类名(const 类名& 对象名) { ... }为了避免浅拷贝带来的问题,我们通常会实现深拷贝(Deep Copy)。深拷贝会创建一个新的内存空间,并复制对象中所有指针指向的数据,而不再对拷贝对象中有对其他资源的引用的指针或引用进行单纯的赋值。这样就不会出现通过成员指针对指向数据进行修改,另外一个对象的指针成员的指向也被修改。还有一块内存被释放两次的错误。int* m_ptr;//没有重载的普通构造函数CTest() {m_age = 0;原创 2024-06-13 13:55:15 · 1049 阅读 · 0 评论 -
【C++核心编程】重载操作符详解
🔥❤️重载操作符:本质上是一个函数,是对原有操作运算符的扩展,告诉编译器当遇到这个操作符并且满足使用场景,调用这个重载的函数函数名 : operator 后接 要重载的操作符,函数参数 取决于 该运算的 使用规则,顺序与类型,要保持一致返回值 :一般是要有的,为了和后续的操作符继续操作operator:C++中的关键字,重载操作符的关键字operator+:函数名原创 2024-06-13 10:45:17 · 1533 阅读 · 0 评论 -
【C++核心编程】extern关键字&头文件重复
🔥❤️头文件中变量和函数的声明修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”1. extern修饰变量的声明如果文件a.cpp需要引用b.cpp中变量int v,就可以在a.cpp中声明extern int v,然后就可以引用变量v。这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.cpp要引用到v,不只是取决于在a.cpp中声明extern int v,还取决于变量v本身是能够被用到的。这涉及到c语言的原创 2024-06-12 09:39:50 · 1195 阅读 · 0 评论 -
【C++核心编程】多态&虚函数指针&虚函数表
🔥❤️多态,通俗来讲就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。比如,在买票这一行为,普通人买票是全价买票,学生买票是半价买票,而军人买票是优先买票;再比如动物园的动物叫这个行为,不同的动物叫声是不一样的。这些都是生活中多态的例子。原创 2024-06-11 17:22:44 · 886 阅读 · 0 评论 -
【C++核心编程】继承详解
🔥❤️继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称[生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程。如何进行继承:在定义类时,在类名后加上 : 继承方式 父类。如下图所示在定义子类对象,计算大小时,父类也要包含在内。原创 2024-06-11 10:10:20 · 843 阅读 · 0 评论 -
【C++核心编程】引用|引用的本质
🔥❤️引用变量是C++新增的复合类型,对已定义的变量的别名。主要用途是用作函数的形参和返回值。注意:l 引用的数据类型要与原变量名的数据类型相同。l 引用名和原变量名可以互换,它们值和内存单元是相同的。l 必须在声明引用的时候初始化,初始化后不可改变。l C和C++用&符号来指示/取变量的地址,C++给&符号赋予了另一种含义。原创 2024-06-10 10:14:54 · 382 阅读 · 0 评论 -
【C++核心编程】类与类之间的关系
🔥❤️依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联方式,这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类。定义:组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为。,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且。原创 2024-06-09 19:50:15 · 448 阅读 · 0 评论 -
【C++核心编程】类的基础知识
🔥❤️C语言中一般是由数据和算法组成,数据和算法彼此独立,关联性不强,在C++中将相互关联数据和算法封装起来,形成结构体或类,无论类还是结构体都是一个抽象的概念,只有定义类的变量时,数据才会真实存在,这个变量我们称之为对象,C++程序过程中,尽量避免单独的数据和算法,而是由一个个类对象组成的,这就是面向对象。类﴾class﴿:完成某一功能的数据和算法的集合,是一个抽象的概念。可以将其视为一个模板对象:类的一个实例,具体的概念,是真正存在于内存中的。原创 2024-06-08 20:35:59 · 847 阅读 · 0 评论 -
【C++核心编程】C++入门关键基础知识
🔥❤️C语言是面向过程,C是面向对象。C++是一门面向对象编程的语言,把问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为,更注重的是程序的整体设计,方便程序后期维护、优化和管理,让一个功能尽可能的通用。面向对象编程只有一个价值: 应对需求的变化,本意是要处理大型复杂系统的设计和实现。常说的面向过程和面向对象,其本质还是在其设计思想上原创 2024-06-04 20:00:50 · 1242 阅读 · 14 评论