C++
文章平均质量分 94
感受C++的支配吧
Lifeyu&
生老病死, 因缘聚合. 世间纷繁, 皆有其意. 迷之则轮回苦, 悟之则天地宽. 红尘勘破, 大道可期.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】深入浅出之多态
多态是指不同继承关系的类对象,去调用同一函数,产生了不同的行为。必须通过基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。1.这里派生类的指针去调用public继承下来的基类函数test, 那么test里面又去调用func, this(A*,j基类)指针调用func, 那么这里满足多态吗?多态两个条件(1):要实现多态效果,第⼀必须是基类的指针或引⽤,因为只有基类的指针或引⽤才能既指向基类对象也可以指向派⽣类对象(切片);原创 2025-04-20 20:08:11 · 1910 阅读 · 38 评论 -
【C++】深入浅出之继承
继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,而继承便是类设计层次的复用。例如,以下代码中Student类和Teacher类就继承了Person类。//父类public:protected:string _name = "张三";//姓名//年龄//子类。原创 2025-04-17 21:06:31 · 1338 阅读 · 29 评论 -
【C++】特化妙技与分文件编写 “雷区”
通俗一点,声明就是一个承诺,我现在要结婚买房了,但是钱还差5w,这时候你想起你的好哥们,让他借你5w,你哥们说好,我过几天就给你打过来(声明),这时候你就要等5天后去找他(链接);这就是模板的特性造成无法确定类型,又恰好因为没确定类型,后面单向操作导致test.i有定义不知道初始化什么类型,a.i有类型缺无法实例化。你哥们太关心你了,知道你还差钱,早偷偷的就把钱打给你了,这时候你还需要5天后去找他(链接)吗。使用非类型模板参数后,我们就可以在实例化对象的时候指定所要创建的静态数组的大小了。原创 2025-04-17 10:40:44 · 1158 阅读 · 22 评论 -
【C++】一起探究开挂神器——模板(初阶)
先来看到的就是其定义格式,函数模版加在函数上,那对于类模版的话就是加在类上class 类模板名// 类内成员定义我们以下面这个Stack类为例来进行讲解如果你学习了模版的相关知识后,一定会觉得这个类的限制性太大了,只能初始化一个具有整型数据的栈,如果此时我想要放一些浮点型的数据进来的话也做不到public:perror("malloc申请空间失败!!!");return;_size = 0;_size++;// 其他方法...~Stack()_size = 0;原创 2024-09-19 20:42:43 · 978 阅读 · 1 评论 -
【C++】类和对象(下)
特性2:友元函数不能用const修饰,因为友元函数只是一个全局函数,不属于类的成员函数,所以它没有隐藏的this指针,而const修饰的就是this指针,只有非静态的成员函数才能用const修饰。【单向】这个词很重要,一样还是上面的Date类,因为在Time类中声明了其为它的友元类,但是在Date类中没有声明Time为它的友元类,所以Time是无法访问到Date类中私有成员的。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。原创 2024-09-14 15:45:52 · 1221 阅读 · 0 评论 -
【C++】 string底层封装的模拟实现
或许有的兄弟会有疑问,为什么初始化_str的时候,开辟_str的空间要用 new char[1]而不是new char,这是因为我们string的数据存储都是连续存储在一起的,用\0标识结束位置,如果用new char那么单独在各个不连续的空间并不能让每个数据后面都有\0,所以我们new char[]连续的空间,存储在一起,在这块连续的空间后放上\0。因为我们接下来实现的类和和库中std命名空间的string类的类名相同,所以我们为了防止冲突,用一个bit命名的命名空间解决这个问题。原创 2025-03-30 21:16:36 · 481 阅读 · 0 评论 -
【C++】日期类的实现
前面我们已经学了类和对象上、中两个模块的内容了,我们可以综合学习的这些内容来实现一个日期类。日期类的实现我们用3个文件来实现,分别是,Date.h Date.cpp test.cppDate.h文件用于类中需要的成员函数的声明Date.cpp文件用于成员函数的实现test.cpp文件用于用户测试案列下面是Date.h的内容class Date//友元函数//友元函数解决类外面函数访问私有变量public://构造函数else。原创 2024-08-28 16:30:12 · 779 阅读 · 0 评论 -
【C++】内存管理
看完了使用new/delete如何去操作C++中的【内置类型】,接下去我们来看看我们要如何去操作一个自定义类型首先我们来看看C语言中我们是如何去操作自定义类型的,下面有一个单链表的结构体,此时我们若是要构建出一个个链表结点的话,还需要去调用下面这个函数,很是麻烦int val;exit(-1);但如果用C++的话就不一样了,我们可以使用之前所学习过的构造函数初始化列表在开辟出空间的时候就做一个初始化的工作,做到事半而功倍int val;: val(x){}原创 2024-09-20 23:16:30 · 1238 阅读 · 1 评论 -
【C++】拿捏运算符重载
所以当运算符重载函数放到类内时,就要改变其形参个数,否则就会造成参数过多的现象,在形参部分给一个参数即可,比较的对象就是当前调用这个函数的对象即【this指针所指对象】与【形参中传入的对象】【概念】:运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通的函数类似。时,C++语⾔允许我们通过运算符重载的形式指定新的含义。👉【参数类型】:const T&,传递引用可以提高传参效率。👉解决办法3:设置友元【不好,会破坏类的完整性】【函数原型】:返回值类型。原创 2024-08-16 12:25:49 · 1033 阅读 · 0 评论 -
【C++】产生拷贝构造的三种形式
【代码】【C++】产生拷贝构造的三种形式。原创 2024-08-13 19:43:30 · 533 阅读 · 0 评论 -
【C++】类和对象(中)
假设有这么个场景,你需要往栈里面入栈数据。Stack st;st.Push(1);st.push(2);但是一运行起来可以发现,程序却奔溃了,这是为什么呢?原来我们没有写Init函数,那么,栈都还没有开辟空间初始化这些仔细一想就发现好像是忘记Init()初始化了,加上之后就没有问题了那么问题就来了,我们使用栈这个数据结构的时候,有时总是会忘记初始化出问题。这在练习中可能容易发现,但是如果在一个大项目中就难以调试。这就要涉及到我们的构造函数(C++默认的6个函数之一)首先我们来介绍这六个函数。原创 2024-08-12 22:06:48 · 842 阅读 · 0 评论 -
【C++】类和对象(上)
C++中用class关键字来定义类,和C语言中结构体一样其中类的主体用{}括起来,并在后面加上分号类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数为了区分成员变量,在命名的时候开头用_或者m(不强制)// 类体:由成员函数和成员变量组成 };// 一定要注意后面的分号【 注】:class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略还记得我们在数据结构中讲的栈吗?原创 2024-08-07 09:34:31 · 828 阅读 · 0 评论 -
【C++】内联函数vs宏 && nullptr
inline不建议声明和定义分离到两个⽂件,分离会导致链接错误。因为inline被展开,就没有函数地址址,链接时会出现报错。return 0;解决这个问题就直接把定义和声明写到同一个头文件中这样内联函数在展开的时候就可以找到地址#nullptrC++中NULL可能被定义为字⾯常量0,或者C中被定义为⽆类型指针(void*)的常量。不论采取何种。原创 2024-08-03 19:47:16 · 841 阅读 · 0 评论 -
【C++】初识引用
首先来看第一个,若是定义了一个引用类型的变量int&,那么就必须要去对其进行一个初始化,指定一个其引用的对象,否则就会报错int a = 10;int& b = a;int& c;原创 2024-08-03 18:37:22 · 1247 阅读 · 0 评论 -
【C++】初识C++
命名空间里面也可以嵌套命名空间。就像结构体里面也可以嵌套结构体这时候我们对于:是不是也可以封装在一个命名空间里面在嵌套定义两个命名空间//队列代码 {//单链表代码 } }原创 2024-08-01 22:04:21 · 1112 阅读 · 0 评论
分享