cpp
文章平均质量分 84
讲解cpp知识的专栏
CoderCzy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++之模板
在编译器编译阶段,对于模板函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用。比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码,对于字符类型也是如此。用不同类型的参数使用函数模板时,称为函数模板的实例化。模板参数实例化分为:隐式实例化和显式实例化。函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。所以其实模板就是将本来应该我们做的重复的事情交给了编译器。原创 2024-07-20 21:08:44 · 305 阅读 · 0 评论 -
c++之类和对象上
•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。•为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。•C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是。原创 2024-07-12 20:59:31 · 1022 阅读 · 0 评论 -
c++类和对象(中)
4.若未显式定义拷⻉构造,编译器会⽣成⾃动⽣成拷⻉构造函数。⾃动⽣成的拷⻉构造对内置类型成 员变量会完成值拷⻉/浅拷⻉(⼀个字节⼀个字节的拷⻉),对⾃定义类型成员变量会调⽤他的拷⻉构 造。5.像Date这样的类成员变量全是内置类型且没有指向什么资源,编译器⾃动⽣成的拷⻉以完成需要的拷⻉,所以不需要我们显⽰实现拷⻉构造。像Stack这样的类,虽然也都是内置类型,但是_a指向了资源,编译器⾃动⽣成的拷⻉构造完成的值拷⻉/浅拷⻉不符合我们的需求,所以需要我们⾃⼰实现深拷⻉(对指向的资源也进⾏拷⻉)。原创 2024-07-15 13:52:39 · 770 阅读 · 0 评论 -
c++入门
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。•namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。•C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响。原创 2024-07-10 21:18:51 · 1056 阅读 · 0 评论 -
string的主要接口介绍和简单实现
1. 传统实现方法//默认构造函数//容量啥的都不算\0//拷贝构造//都是深拷贝如果不是会造成//1.会进行两次析构//2. 修改其中一个对象另一个也会变//自己与自己进行赋值//会造成我们把s中的str给this时进行字符串拷贝//地址会是不确定的if (this!= &s)~string()2. 现代版写法的实现//默认构造函数//容量啥的都不算\0//拷贝构造swap(tem);swap(s);~string()原创 2024-07-26 11:45:34 · 1111 阅读 · 0 评论 -
类和对象(下)
成员变量都会走初始化列表,因为初始化列表是成员变量定义的地方,如果我们没有在初始化列表中实现,就会看成员变量有没有缺省值如果没有对内置类型是否初始化看编译器,对于自定义类型成员会调用默认构造函数,如果没有默认构造函数就会报错;内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考 虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其 他地⽅都⽤不了。如果⼀个类定义在另⼀个类的内部,这个内部类就叫做内部类。原创 2024-07-16 19:55:26 · 996 阅读 · 0 评论 -
c++之内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;原创 2024-07-18 12:51:02 · 902 阅读 · 0 评论 -
c++之多态
必须满足继承条件调用的相同函数必须是虚函数该虚函数必须完成重写调用时应该用基类的指针或引用来接收基类或派生类的指针或引用;再根据指针具体指向谁去调用那个类的函数下面我们就通过题目来具体感悟一下多态关于虚函数说法正确的是( B)A.被virtual修饰的函数称为虚函数B.虚函数的作用是用来实现多态C.虚函数在类中声明和类外定义时候,都必须加虚拟关键字D.静态虚成员函数没有this指针a:被virtual修饰的成员函数称为虚函数c:虚函数在类中声明加在类外实现时不能加。原创 2024-09-17 22:37:52 · 1047 阅读 · 0 评论 -
模版的进阶
如果我们把add这个模版定义和声明全部放在a.h中,首先.h文件展开在main.cpp说明模版的声明定义都有了接着把它实例化了;因此会有实例化函数的地址,这样在连接时就可以找到该函数了。这就属于没有完全相同基础模版的cosnt修饰的是a,b,而我们下面修饰的是*a,*b;偏特化并不仅仅是指特化部分参数,而是针对模板参数更进一步的条件限制所设计出来的一。因此我们不建议写成函数模版我们可以实现一个函数来完成特化的操作。全特化即是将模板参数列表中所有的参数都确定化。我们建议模版的声明和定义在一起。原创 2024-08-12 14:41:25 · 468 阅读 · 0 评论 -
stack与queue
deque成员就是两个迭代器以及一个存放buffer数组地址的数组迭代器里面也有四个指针分别指向每个buffer的开头结束以及当前得位置和当前buffer的地址存放在中控器的那一个位置(通过node指针)。原创 2024-08-05 10:44:42 · 582 阅读 · 0 评论 -
c++之继承
我们直接用一段程序来理解我们的继承public:// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证protected:string _name = "张三";// 姓名// 地址// 电话// 年龄public:// 学习// ...protected:int _stuid;// 学号public:// 授课//...protected:// 职称int main()Student s;Teacher t;return 0;原创 2024-09-15 21:41:23 · 835 阅读 · 0 评论 -
c++11(内容十分干请耐心食用)
接着去构造两个临时对象然后拷贝构造给我们的参数,接着构造str,拷贝构造临时对象,最后拷贝赋值给ret。而编译器进行优化的点就是把构造拷贝构造优化为了直接构造,省略了临时对象,然后省略了str的构造,直接去构造临时对象,最后拷贝赋值给ret。包装器把我们一切可以调用的对象封装了,且bind在我们进行对一个类非静态成员函数进行包装时我们就可以用bind来绑定第一个参数,从而实现我们想要的效果再结合我们的function包装器来进行调用,极大地提升了代码的可读性。的fn可调⽤对象进⾏处理后返回⼀个可调⽤对象。原创 2024-12-02 23:25:59 · 1089 阅读 · 0 评论 -
c++智能指针
我们的智能指针就是为了解决这种场景在下面我们会详细分析智能指针的设计思路~原创 2024-12-22 22:32:51 · 1032 阅读 · 0 评论 -
vector简单模拟实现
【代码】vector简单模拟实现。原创 2024-08-01 09:16:06 · 269 阅读 · 0 评论 -
异常处理机制
C++标准库也定义了⼀套⾃⼰的⼀套异常继承体系库,基类是exception,所以我们⽇常写程序,需要在主函数捕获exception即可,要获取异常信息,调⽤what函数,what是⼀个虚函数,派⽣类可以重写。有时catch到⼀个异常对象后,需要对错误进⾏分类,其中的某种异常错误需要进⾏特殊的处理,其他错误则重新抛出异常给外层调⽤链处理。,程序的⼀部分负责检测问题的出现,然后解决问题的任务传递给程序的另⼀部分,检测环节⽆须知道问题的处理模块的所有细节。就可以把捕获的对象直接抛出。原创 2024-12-11 23:07:42 · 752 阅读 · 0 评论 -
二叉搜索树
定义一个cur指针和一个parent指针;插入的key比cur指向的key大就往右边走cur走一次parent跟新知道cur为空此时判断parent的key和要插入的key的大小来决定插入左边还是右边。如果查找的key大于当前节点的key就去右边反之左边,相等返回该节点。直到cur为空还没找到就返回空指针。原创 2024-09-18 23:08:59 · 510 阅读 · 0 评论 -
list的简单模拟实现
return tmp;= v.node;Node* node;class list//T是aapublic://这个是正常对象的迭代器//这个是const对象的迭代器private:Node* head;原创 2024-08-05 10:11:49 · 369 阅读 · 0 评论
分享