自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 友元函数

友元提供了一种突破类访问限定符封装的方式,友元分为:友元函数和友元类,在函数声明或者类声明的前面加 friend,并且把友元声明放到一个类的里面。外部友元函数可访问类的私有和保护成员,友元函数仅仅是一种声明,他不是类的成员函数。友元函数可以在类定义的任何地方声明,不受类访问限定符限制。一个函数可以是多个类的友元函数。友元类中的成员函数都可以是另一个类的友元函数,都可以访问另一个类中的私有和保护成员。友元类的关系是单向的,不具有交换性,比如 A 类是 B 类的友元,但是 B 类不是 A 类的友元。

2024-10-10 00:15:00 491

原创 C++ 隐式类型转换

• C++支持内置类型隐式类型转换为类类型对象,需要有相关内置类型为参数的构造函数。• 构造函数前面加 explicit 就不再支持隐式类型转换。• 类类型的对象之间也可以隐式转换,需要相应的构造函数支持。

2024-10-09 00:15:00 927

原创 C++ static静态

这里我使用vs编译器,vs编译器不支持可边长数组,所以代码有点不一样。

2024-10-09 00:15:00 996

原创 构造函数(初阶+进阶)

默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。构造函数是特殊的成员函数,

2024-10-08 15:11:50 1413

原创 C++-再探构造函数(进阶)

来到类和对象最后一个章节,这里的难度已经极大程度的降低了之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个 “成员变量” 后面跟一个放在括号中的初始值或表达式。每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。引用成员变量,const 成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。

2024-10-08 15:10:13 1004

原创 类和对象(3)

来到类和对象最后一个章节,这里的难度已经极大程度的降低了之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表,初始化列表的使用方式是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个 “成员变量” 后面跟一个放在括号中的初始值或表达式。每个成员变量在初始化列表中只能出现一次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。引用成员变量,const 成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错。

2024-10-08 15:09:03 1778

原创 日期类的实现(C++)

日期类是六个成员函数学习的总结和拓展,是实践的体现#include//流文件#include//断言头文件//域展开class Date//友元函数(输入输出流)public://构造函数//拷贝构造函数//获取一个日期(内联函数)//四年一润,百年不润。四百年一润。return 29;else//检查日期是否合法//检查月份,天数else//运算符重载//计算加法//计算减法//++ --

2024-09-30 00:30:00 1168

原创 日期类的实现- 计算日期之间相差多少天-解决单参数构造

【代码】日期类的实现- 计算日期之间相差多少天-解决单参数构造。

2024-09-27 12:51:40 589

原创 C++ &运算符重载

运算符重载:取地址运算符重载分为普通取地址运算符重载和const取地址运算符重载,一般这两个函数编译器自动生成的就可以够我们用了,不需要去显示实现。除非一些很特殊的场景,比如我们不想让别人取到当前类对象的地址,就可以自己实现一份,胡乱返回一个地址。

2024-09-25 14:31:04 405

原创 C++ const成员函数

const在星号左边 修饰的是指向的内容const在星号的右边 修饰的是指针本身,但是实参修饰指针的const不存在权限问题只有指向内容的const才有权限问题。

2024-09-25 14:13:04 1344

原创 类和对象(2)(六个默认成员函数)

默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。构造函数是特殊的成员函数,

2024-09-23 00:30:00 1384

原创 C++ 赋值运算符重载

赋值运算符重载的特点:成员函数:赋值运算符重载必须定义为类的成员函数。参数:建议将参数声明为const类型的类引用,以避免不必要的拷贝。返回值:应有返回值,且建议为当前类类型的引用,这样可以支持连续赋值操作,并提高效率。如果没有显式实现赋值运算符重载,编译器会提供一个默认实现。默认赋值运算符对内置类型成员变量执行值拷贝或浅拷贝。对自定义类型成员变量,会调用其赋值运算符重载函数。对于像Date这样只有内置类型成员的类,编译器自动生成的赋值运算符通常足够使用。对于像Stack。

2024-09-20 00:45:00 1008

原创 C++ 运算符重载+赋值运算符重载

当运算符被用于类类型的对象时,C++ 语言允许我们通过运算符重载的形式指定新的含义。C++ 规定类类型对象使用运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。运算符重载是具有特殊名字的函数,他的名字是由 operator 和后面要定义的运算符共同构成。和其他函数一样,它也具有其返回类型和参数列表以及函数体。重载运算符函数的参数个数和该运算符作用的运算对象数量一样多。

2024-09-20 00:30:00 1627

原创 C++ 运算符重载

当运算符被用于类类型的对象时,C++ 语言允许我们通过运算符重载的形式指定新的含义。C++ 规定类类型对象使用运算符时,必须转换成调⽤对应运算符重载,若没有对应的运算符重载,则会编译报错。运算符重载是具有特殊名字的函数,他的名字是由 operator 和后面要定义的运算符共同构成。和其他函数一样,它也具有其返回类型和参数列表以及函数体。重载运算符函数的参数个数和该运算符作用的运算对象数量一样多。

2024-09-19 00:30:00 1216 2

原创 C++ 类的默认成员函数- 拷贝构造函数

默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。

2024-09-19 00:15:00 847

原创 C++ 类的默认成员函数-析构函数

默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。

2024-09-18 03:15:00 1873

原创 C++ 类的默认成员函数-构造函数(初阶)

默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成以下 6 个默认成员函数,需要注意的是这 6 个中最重要的是前 4 个,最后两个取地址重载不重要,我们稍微了解一下即可。其次就是 C++11 以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后面再讲解。默认成员函数很重要,也比较复杂,我们要从两个方面去学习。构造函数是特殊的成员函数,

2024-09-18 02:45:00 1661

原创 C++ 类域+类的对象大小

类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要使用作用域操作符指明成员属于哪个类域。类域影响的是编译的查找规则,下面程序中Init如果不指定类域Stack,那么编译器就把Init当成全局函数,那么编译时,找不到array等成员的声明/定义在哪里,就会报错。指定类域Stack,就是知道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。

2024-09-17 00:30:00 523

原创 C++ this指针

Date 类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当 d1 调用 Init 和 Print 函数时,该函数是如何知道应该访问的是 d1 对象还是 d2 对象呢?那么这里就要看到 C++ 给了一个隐含的 this 指针解决这里的问题。编译器编译后,类的成员函数默认都会在形参第一个位置,增加一个当前类类型的指针,叫做 this 指针。

2024-09-17 00:30:00 1075 2

原创 类和对象(1)

类和对象是C++初阶比较难的篇章,这里的学习深度还是很深的,建议学习的小伙伴比这打一下代码。class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加_ 或者 m 开头,注意C++中这个并不是强制的,只是一些惯例,具体看公司的要求。

2024-09-16 00:15:00 2143 3

原创 C++ 访问限定符

C++一种实现封装的方式,用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。public修饰的成员在类外可以直接被访问;protected和private修饰的成员在类外不能直接被访问,protected和private是一样的,以后继承章节才能体现出他们的区别。访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止,如果没有后面没有访问限定符,作用域就到 }即类结束。

2024-09-16 00:15:00 806

原创 C++ inline内联函数

用inline修饰的函数叫做内联函数,编译时C++编译器会在调用的地方展开内联函数,这样调用内联函数就不需要建立栈帧了,就可以提高效率。展开的意思就是不建立栈帧了,直接进行执行,所以本质就是提升效率用的inline对于编译器而言只是一个建议,也就是说,你加了inline编译器也可以选择在调用的地方不展开,不同编译器关于inline什么情况展开各不相同,因为C++标准没有规定这个。inline适用于频繁调用的短小函数,对于递归函数,代码相对多一些的函数,加上inline也会被编译器忽略。

2024-09-14 08:33:45 1193

原创 C++ nullptr 和NULL的区别

在C++中,nullptr和NULL。

2024-09-14 08:33:38 584

原创 C++引用(别名的讲解)

引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间它和它引用的变量共用同一块内存空间。比如:水壶传中李,宋江叫"铁牛",江湖上人称"黑旋风";当创建的对象是局部变量的时候,不适合引用,因为地址会进行销毁,此时引用会返回一个错误地址。

2024-09-14 00:30:00 722

原创 引用和指针的区别(面试概念性题型)

内存占用引用:引用一个变量时,实际上并不占用额外的内存空间,它就是原始变量的别名。指针:指针变量需要占用内存空间来存储一个地址值。初始化引用:引用必须在定义时立即初始化,且一旦初始化后,不能再引用另一个对象。指针:指针变量在定义时可以不初始化,但为了避免指向随机内存,建议初始化。指向性引用:一旦引用了一个对象,就不能更改为引用另一个对象。指针:指针可以随时更改其指向的对象。访问对象引用:通过引用访问对象时,可以直接使用引用名,就像使用原始变量一样。

2024-09-13 11:14:54 627 2

原创 C++ 引用的讲解初阶(&)

内存占用引用:引用一个变量时,实际上并不占用额外的内存空间,它就是原始变量的别名。指针:指针变量需要占用内存空间来存储一个地址值。初始化引用:引用必须在定义时立即初始化,且一旦初始化后,不能再引用另一个对象。指针:指针变量在定义时可以不初始化,但为了避免指向随机内存,建议初始化。指向性引用:一旦引用了一个对象,就不能更改为引用另一个对象。指针:指针可以随时更改其指向的对象。访问对象引用:通过引用访问对象时,可以直接使用引用名,就像使用原始变量一样。

2024-09-13 11:12:57 906

原创 C++ const引用常量

临时对象是编译器为了存储表达式的求值结果而创建的未命名对象。它们在表达式结束后通常会立即销毁,但通过常量引用可以延长其生命周期。

2024-09-13 11:05:21 820

原创 C++入门基础

这一篇章算是C++栏目的语法的第一篇章,主要是为类和对象打下基础,介绍一些C++基本的语法结构这里提醒一下,要是看不懂第一步创建文件的,其实更建议先学习一下C语言,因为C++的学习往往已经有点语法和数据结构的基础了那么就更建议从C语言开始学习,从下而上的学习,关于C语言篇章的博客,还是有些不足的,以后我会重新编写一下C语言篇章的博客C语言的系统性学习_Jason_from_China的博客-CSDN博客。

2024-09-13 10:52:19 1840 4

原创 C++缺省参数

注意:缺省参数就是不需要的时候没啥用,需要的时候才出现,所以缺省参数就类似于舔狗。

2024-09-13 01:45:00 483

原创 C++函数重载

概念: C++支持在同一作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C++函数调用就表现出了多态行为,使用更灵活。C语言是不支持同一作用域中出现同名函数的。

2024-09-13 01:45:00 482

原创 C++的流提取(>>)(输入) & 流插入(<<)(输出)

流提取(

2024-09-12 18:42:07 1439

原创 C++ namespace(域)

定义命名空间,需要使用到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2024-09-12 18:41:14 1255

原创 C++语言介绍

(上):主要讲解C++的发展历程,由来,祖师爷,以及学习难度,学习曲线,以及自学的书籍推荐,或者课程推荐(下):为C++的正式开启-类和对象,做语法铺垫。

2024-07-11 12:30:32 1895 4

原创 霍尔排序(递归+非递归)

快拍不仅需要学习递归,还需要学东西非递归,这样更有助于我们理解快拍首先我们需要知道,非递归的学习需要使用栈,所以如果我们的栈的学习是不完善的,建议学习一下栈。

2024-06-21 07:22:01 1241 2

原创 快排(前后指针实现)

快排解决办法有很多种,这里我再拿出来一种前后指针版本虽然这个版本的时间复杂度和霍尔一样,逻辑也差不多,但是实际排序过程,确实会比霍尔慢一点。

2024-06-21 07:21:21 980

原创 冒泡排序-精讲

冒泡排序具备很强的教学意义,但是没有什么实践意义,这里作为第一个讲解的排序,目的是从简单开始讲解,方便理解。

2024-06-21 04:45:00 1096

原创 堆排序+衍生问题top_k问题

这里本质还是堆排序的衍生问题也就是还是堆排序问题,我们最终需要学习的就是处理大型数据的问题。

2024-06-20 02:00:00 1011

原创 计数排序-C语言实现

计数排序是速度特别快的一种排序方式,甚至说可以达到o(n),什么概念,一趟就可以实现,这是很快的,虽然具备一定的局限性,但是这个速度也是叹为观止的。

2024-06-20 00:30:00 967

原创 快排(霍尔排序实现+前后指针实现)(递归+非递归)

快排解决办法有很多种,这里我再拿出来一种前后指针版本虽然这个版本的时间复杂度和霍尔一样,逻辑也差不多,但是实际排序过程,确实会比霍尔慢一点快拍不仅需要学习递归,还需要学东西非递归,这样更有助于我们理解快拍首先我们需要知道,非递归的学习需要使用栈,所以如果我们的栈的学习是不完善的,建议学习一下栈。

2024-06-19 00:30:00 1881

原创 归并排序 (递归实+非递归)

这里递归排序的非递归方式还是比较有难度的,所以需要多次观看两遍,我也会多次详细的讲解,促进知识的理解。

2024-06-19 00:30:00 808

python源程序设计的课后习题编程题答案

机械工业出版社 高等教育系列教材 Python程序设计 赵增敏 ISBN 978-7-111-60950-6

2024-01-09

空空如也

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

TA关注的人

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