C++
文章平均质量分 54
Makefilehoon
萌妹子初学者,请各位多多指点!
展开
-
删除单链表
#include <iostream>#include<algorithm>#include<vector>using namespace std;template<typename T>struct Node{ T data; Node <T> *next;};template<typename T>class LinkList{public: LinkList(); ...原创 2022-03-24 20:50:08 · 1207 阅读 · 0 评论 -
unordered_map
#include <iostream>#include <string>#include <unordered_map>using namespace std;//详细介绍C++STL:unordered_map - 朤尧 - 博客园 (cnblogs.com)void display(unordered_map<string, double> myrecipe, string str){ for (auto iter = myrec...原创 2022-03-10 20:33:00 · 107 阅读 · 0 评论 -
代理模式详解:
是撒大苏打原创 2021-12-23 20:50:13 · 90 阅读 · 0 评论 -
运算符重载
注明:关于运算符重载的问题,我遇到过很多次,依然没有记住。痛心疾首!运算符重载的典型使用:在玩游戏时弹出来一个广告,我们点关闭结果打开了广告,就是代码定义的是打开给我们显示的是关闭。运算符重载:1.概念:把运算符operator+当做一个函数来看,把对象当做一个复数,来进行实部与实部,虚部与虚部的相加。返回一个对象。Complex operator + (Complex &c2); //...原创 2018-05-15 23:48:42 · 138 阅读 · 0 评论 -
STL容器deque
deque相对于队列#include <iostream>using namespace std;#include <deque>void f1(){ deque<int> d(3); d.push_back(2);//后 d.push_front(1);//前 d.push_back(3);//后加 // 1 0 0 0 2 3 deque<int>...原创 2018-03-13 09:42:05 · 128 阅读 · 0 评论 -
5.3STL容器之list的简介
list相当于是一个双链表,可以快速的从任意位置删除和插入,但查询不方便!#include <iostream>using namespace std;#include <list>//创建list对象void f1(){ list<int> l; //在后面增加元素 l.push_back(10); l.push_back(20); l.push_back(3...原创 2018-03-13 09:39:11 · 139 阅读 · 0 评论 -
1.VECTOR的相关操作:
#include <iostream>using namespace std;#include <vector>#include "Stu.h"struct Teacher{ int age;};void fx() { Teacher t1; t1.age = 10; Teacher t2; t2.age = 20; vector<Teacher> v; v.p...原创 2018-03-13 08:23:10 · 213 阅读 · 0 评论 -
访问权限修饰符
修饰成员(修饰成员变量和成员方法)public:成员变量在任何位置都可杯访问。private:成员变量在当前类中可被访问protected:成员变量在当前类和派生类中可被访问注明:类内的函数可以访问所有的 没有权限 类外的要遵循 共有的,私有的 受保护的 用法: 定义一个私有的成员变量 用公有的去访问这个变量 这样做的原因保护代码 :因为成员变量在数据段是可读的 函数在代码段 执行的时...原创 2018-02-26 00:08:20 · 165 阅读 · 0 评论 -
多字节 宽字节 单字节
多字节:指使用多个字节(1-3)表示一个字符。比如gbk使用英文占一个字节,中文占2个,这个就是多字节了。utf-8是使用1-3个字节表示字符。还有big5等等。宽字节:一般是固定使用2个字节表示一个字符,utf-16(一般就是指unicode)。单字节编码:一个字节就表示一个字符,比如典型的ASCII码中的所有字符都是单字节编码的。1、MultiByteToWideChar 多字节转宽字节2、W...原创 2018-02-24 19:50:17 · 1429 阅读 · 0 评论 -
3.4多基继承的二义性
如果已经声明了类A1,A2,再让B继承A1,A2,A1,A2中有名字相同的成员,如果都被B继承下去了,则在B中就有重复的成员,这时候就产生了二义性。 class A1 class A2 { ...原创 2018-03-03 18:09:49 · 417 阅读 · 0 评论 -
派生类的构造函数和析构函数
关于构造函数和析构函数的总结:1.构造函数和析构函数都不能被继承(原因:构造函数和析构函数和类的名字相同,继承过来就会出错)。2.派生类对象呗被创建时,基类的对象会被先创建。 A->B->C->D; 比如说:class D:public A,public B,public C; 构造的时候先创建A 的对象,再创建B的对象...原创 2018-03-03 17:45:28 · 288 阅读 · 0 评论 -
3.1关于继承和派生的详解
1.派生和继承的举例:比如说 马 公马 母马 则马是基类,公马和母马是派生类,马有吃和走的行为,则公马和母马就不用写吃和走的函数,直接竭诚,公马和母马继承了马的行为,马又派生了公马和母马。马是基类,公马和母马是派生类。公马和母马具备了马的特性,并不能说明是公马还是母马。多级继承:同样,一个派生类也可以有多个基类,比如说儿子是派生类,则基类是父亲和母亲,这种叫多级继承。单级继承:只有一个基类叫单级继...原创 2018-02-27 23:56:00 · 214 阅读 · 0 评论 -
5.4关联式容器
关联式容器: 自动排序,只能用迭代器进行遍历。1.set#include <iostream>using namespace std;#include <set>#include <vector>void f1(){ int ia[10] = { 2, 1, 3, 5, 8, 5, 3, 1, 5, 8 }; vector&l...原创 2018-03-13 09:47:08 · 151 阅读 · 0 评论 -
函数隐藏
1.函数隐藏:派生类中函数名字与基类的成员函数名字相同时,派生类的成员函数会屏蔽基类中同名的成员函数。派生类中的成员变量与基类的成员变量同名时,派生类中的成员变量会屏蔽基类中同名的成员变量(如果要使用的话要加作用域)通过派生类对象,指针,引用,访问基类中被隐藏的成员变量时要加作用域。“基类名::”函数重写:派生类中函数名字,函数返回值,函数参数和基类中的函数名字函数返回值函数参数相同时,则基类的成...原创 2018-03-27 22:41:27 · 1536 阅读 · 0 评论 -
C++线程池的使用
一:为什么要使用线程池?1.为了减少创建和销毁线程的次数,线程池在设计的时候已经创建好了线程,直接使用即可.2.实现多线程并发,提高管理效率,比如说有10个人去银行办业务,有3个窗口柜员,柜员就相当于3个线程,调用10个客户,每个柜员可以同时一次处理一个客户。假如没有线程池,这10个人就去1个窗口排队办业务.二多线程相关的函数:int pthread_create(pthrea...原创 2019-01-13 23:57:14 · 821 阅读 · 0 评论 -
堆和栈的详解
1.栈(Stack):栈由操作系统自行进行管理的内存空间,当进入一个函数是,操作系统会为该函数中的局部变量分配存储空间,系统会分配一个人内存块,叠加在当前的stack上,并且利用指针指向当前的一个内存块的地址。2.栈为什么是后进先出? 函数的局部变量就存储在当前的 内存块上,当函数返回的时候,系统弹出内存块,并且根据指针回到当前的一个内存块,所以,Stack总是后进先出的。举个例子:一个...原创 2018-07-23 08:49:50 · 181 阅读 · 0 评论 -
string中c_str()的用法
1.语法:1 const char *c_str();c_str()函数返回一个指向正规C字符串的指针常量, 内容与本string串相同。这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针。比如:最好不要这样:1 char* ...原创 2018-06-14 00:47:04 · 16175 阅读 · 0 评论 -
operator运算符重载的疑问?
第一种重载方式:Complex operator + (Complex & c2){ Complex c; return c; //此处返回局部变量c;}第二种重载方式:Complex & operetor + (Complex){ this->i=this->i+c2.i; this->j=this-&g...原创 2018-06-12 00:03:21 · 189 阅读 · 0 评论 -
STL容器详解之deque
deque是一种双端队列容器,具有队列和栈的特性,可以在两端进行插入和删除,是一种双端数组。#include <iostream>using namespace std;#include <deque>void f1(){ deque<int> d(3); d.push_back(2);//后 d.push_front(1);//前 d.push_back(3)...原创 2018-05-16 07:22:52 · 195 阅读 · 0 评论 -
STL详解map和multimap
map:自动排序,间不可以重复multimap:自动排序,间可以重复键值对:键就是姓名,值就是后面的信息,比如性别,班级,年龄#include <iostream>using namespace std;#include <map>void f1() { map<int, string> mymap; mymap.insert(pair<int, stri...原创 2018-05-16 00:43:53 · 225 阅读 · 0 评论 -
STL详解之set和multiset
set:里面的元素不能重复,自动排序multiset:里面的元素自动排序,可以有重复的。#include <iostream>using namespace std;#include <set>#include <vector>void f1(){ int ia[10] = { 2, 1, 3, 5, 8, 5, 3, 1, 5, 8 }; //不取最后一位的...原创 2018-05-15 23:57:35 · 194 阅读 · 0 评论 -
C++中this指针的详解:
成员函数中this是指向正在调用该函数的对象,this指正在创建对象内部的成员。同一个类中的函数可以通过this相互调用,普通函数不能通过this调用构造函数,但构造函数可以通过this访问普通函数!.h文件ifndef TEACHER_H_#define TEACHER_H_class Teacher {public: int age; int no; Teacher(); ~Teacher()...原创 2018-05-22 00:22:55 · 374 阅读 · 0 评论 -
2.6C++中友元的详解:
1.友元的概念:打破访问权限的限制,让访问权限不再生效,友员类包含类的所有成员,类的友员可以访问类中的所欲哦成员(包括public,protected和private)。2.友员包括: 类的友员C函数 类的友员成员函数 类的友员类...原创 2018-02-28 00:13:04 · 187 阅读 · 0 评论 -
5.2 STL容器容器的简介:
1. vector的相关操作:STL容器的简介:在数据存储上,有一种对象类型,它可以持有其他对象或者指向其他对象的指针,这种对象类型叫容器,容器类是一种特定代码重用问题的良好解决方案。STL容器的分类: 1.顺序性容器 : vector:vertor在底层是以数...原创 2018-03-07 17:15:22 · 213 阅读 · 0 评论 -
函数模板与类模板的详解
函数模板的性质1) 函数模板并不是真正的函数,它只是C++编译生成具体函数的一个模子。2) 函数模板本身并不生成函数,实际生成的函数是替换函数模板的那个函数,比如上例中的add(sum1,sum2), 这种替换是编译期就绑定的。3) 函数模板不是只编译一份满足多重需要,而是为每一种替换它的函数编译一份。4) 函数模板不可以设置默认模板实参。比如template <typename T=...原创 2018-03-07 00:04:26 · 258 阅读 · 0 评论 -
默认参数值得详解
1.默认参数值得概念:函数在声明的时候已经赋值了,则声明或者调用的时候就不用赋值,如果调用传参了,就用调用传的值,如果一个函数的其中一个默认参数已经有了默认参数值,则这个默认参数后面 的所有值都必须有默认参数!原创 2018-01-02 20:52:58 · 473 阅读 · 0 评论 -
用函数实现strcat和strncat的功能
1.用函数实现strcat的功能#includechar *strcat(char *str1,char *str2){ char *pt=str1; while(*str1!='\0') str1++; while(*str2!='\0') *str1++=*str2++; *str1='\0'; return pt;}原创 2017-12-26 17:32:26 · 515 阅读 · 0 评论 -
malloc/free和new/delete 的详解
1.malloc和free: malloc与free是C++/C 语言的标原创 2018-01-11 10:39:59 · 194 阅读 · 0 评论 -
C++中泛型和模板的总结!
1.模板的作用:模板是C++中多态的一种体现,使用模板就是用户为类或者函数声明一种模式,使类中的某些数据成员或者成员函数取得任意类型。有模板的函数一般都在.h文件中直接定义直接声明。使用模板的目的就是要让程序的实现与类型无关,让你编写出与类型无关的代码,方便代码的重用性。 注明:模板只能声明和定义为全局,命名空间或者类范围内定义,不能在局部范围或者函数内,或者main函数中定义一个模板原创 2017-12-27 06:49:15 · 1719 阅读 · 0 评论 -
面向对象的优点或者是一套好的代码有什么特点?
小编也是小白,面试经常被问到这个问题,这里解释一下:1.可扩展性,你的代码可以随时的增加项目,修改项目,删除一部分功能,不影响代码的完整性。2.可维护性,你的代码修改一个模块就是修改一个模块,各位互不干涉内政。3.符合面向对象的原则,充分体现多态性。4.符合设计原则,对1.2.3.的整体概括,5.高内聚低耦合,每个模块好像没有什么关系,但是放在一起容错率极高。6.设计模式:原创 2017-12-27 06:37:06 · 1122 阅读 · 0 评论 -
函数重载详解
函数重载:1.类和结构体的区别: 结构体:只有变量,没有函数. 类:有变量,有函数。2.函数重载的定义: 多个函数,名字相同,参数不同,是多态的一种体现,C++中C风格的函数也可以重载。3.函数重载的歧义:实例:.cpp#include #include "./c/fs.h"#include "Stu.h"using原创 2017-12-31 19:31:10 · 255 阅读 · 0 评论 -
再谈C++的多态性
1.深入理解多态:多态性可以理解为“一个接口,多种形态”,它是面向对象思想的核心(polymorphism),C++的多态性是通过虚函数来实现的,虚函数是用Virtual关键字来修饰的,基类的虚函数在派生类中可以通过重写虚函数来实现对基类的覆盖,又叫函数隐藏,派生类中重写了虚函数才是多态性的充分体现。2.多态的用法:开发中用的最多的就是声明基类的指针,利用该指针指向子类中的对象,调用相应的虚函数,...原创 2017-12-23 10:53:07 · 280 阅读 · 0 评论 -
详细介绍抽象类
1.抽象类的定义: 带有纯虚函数的类叫做抽象类抽象类只能作为基类来使用,其纯虚函数的实现在派生类中给出,如果派生类中没有重写这个纯虚函数,只是继承纯虚函数,则这个派生类仍然是个抽象类,如果派生类中给出了这个纯虚函数的实现,则这个派生类不再是抽象类,可以新建一个具体的对象了。2.抽象类的作用: 在C++中,抽象类主要用来进行类型隐藏和充当着全局变量的角色,抽象类原创 2017-12-23 17:49:00 · 345 阅读 · 0 评论 -
抽象类详解
1.抽象类的定义: 带有纯虚函数的类叫做抽象类抽象类只能作为基类来使用,其纯虚函数的实现在派生类中给出,如果派生类中没有重写这个纯虚函数,只是继承纯虚函数,则这个派生类仍然是个抽象类,如果派生类中给出了这个纯虚函数的实现,则这个派生类不再是抽象类,可以新建一个具体的对象了。2.抽象类的作用: 在C++中,抽象类主要用来进行类型隐藏和充当着全局变量的角色,抽象类表示部分地实原创 2017-12-23 16:19:00 · 591 阅读 · 0 评论 -
指向对象成员变量的指针和指向成员函数的指针
1.指向对象成员变量的指针:形式: 数据类型名 * 指针变量名定义了一个指针,指向对象的成员变量 实例: Stu.h Stu stu:int *p=&(stu.age);/原创 2018-01-02 20:55:37 · 1198 阅读 · 0 评论 -
常成员变量,常成员对象,常成员函数的详解
1.常成员变量:常成员变量是用关键字const来声明的变量,const位于变量前或者类型前都一样,用const修饰的变量只能初始化一次,以后都用这个值。。class Time{ public:const int hour; int const minute; };注明:常成员函数只能通过构造函数的初始化表对其进行初始化,原创 2018-01-02 22:35:42 · 1162 阅读 · 1 评论 -
拷贝构造函数的定义
1.拷贝构造函数的定义:复制构造函数参数为类对象本身的引用,用于根据一个已经存在的对象复制出一个新的该类的对象,一般在函数中会将已经存在对象的数据成员的值复制一份到新的对象中,如果没有写拷贝构造函数,则系统会默认创建一个复制构造函数,当类中有指针成员时,由系统默认创建该构造函数会存在风险。Stu.h#ifndef STU_H_#define STU_H_class原创 2018-01-02 23:38:41 · 1471 阅读 · 0 评论 -
C/C++中static的作用:
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)修饰局部变量:在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。就是说会局部变量会保存上一次赋的值2) 修饰全局变量:在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。注意,只有在定义了变量后...转载 2018-02-08 00:26:50 · 256 阅读 · 0 评论 -
拷贝构造函数涉及的内存泄漏的问题
拷贝构造函数进行创建对象的时候假如定义一个指针,对象t1中的指针P指向对象t2中的指针p指向同一块内存空间,创建对象的时候先创建t1,后创建t2,t1和t2的指针p指向同一块内存,析构的时候先析构t2,在析构t1,析构t2的时候已经把p所指的内存空间释放了,析构t1的时候p就没有指向内存空间了所以出现内存泄漏,具体代码如下:原创 2018-02-03 20:34:05 · 1047 阅读 · 0 评论 -
野指针的详解:
野指针的定义:野指针指向一个已删除的对象或未申请访问受限内存区域的指针。指针指向的地址被delete或者free后,该指针仍然存在,则为野指针!(成因1.指针变量没有被初始化 成因2.:指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。) 如下程序:原创 2018-01-26 15:32:05 · 578 阅读 · 0 评论