C++
文章平均质量分 88
为你关月亮
这个作者很懒,什么都没留下…
展开
-
string类——C++
string类string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, allocator> string;在使用string类时,必须包含#include头文件以及using namespace std;string常见接口string的其中一个缺点是,插入数据,空间不够需要增容,增容是有性能消耗。常见构造string()构造空的string类对象,即空字符串string(cons原创 2021-03-20 00:03:10 · 224 阅读 · 0 评论 -
智能指针(auto_ptr、unique_ptr、shared_ptr、weak_ptr)——C++
智能指针C++中堆内存的申请和释放都由程序员自己管理,程序员自己管理堆内存可以提高程序的效率,但是容易造成问题:忘记delete内存:会导致内存泄漏问题,而且除非内存耗尽否则很难检测到这种错误使用已经释放的对象:在释放掉内存后将指针置为空,并且下一次使用前判空同一块内存释放两次:如果有两个指针指向相同的动态分配空间,就会造成这种错误发生异常时的内存泄漏:若在new和delete之间发生异常,则会导致内存泄漏C++引入了智能指针来解决这种问题。RAIIRAII(Resource Acqui原创 2021-03-20 00:00:34 · 238 阅读 · 0 评论 -
模板——C++
模板泛型编程泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板(函数模板和类模板)是泛型编程的基础。函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。函数模板格式template<typename T>//关键字<模板参数(类型)>void Swap(T& left,T& right){ }//返回值类型 函数名(参数列表)typename是用来定义模板参数关键原创 2021-03-19 23:58:41 · 145 阅读 · 0 评论 -
多态的学习——C++
多态多态是不同继承关系的类对象,去调用同一函数,产生了不同行为。多态的定义和实现构成条件必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数虚函数——被virtual修饰的类成员函数虚函数的重写(覆盖)——派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数虚函数重写的两个例外:协变——派生类重写基类函数时,与基类虚函数返回值类型不同。即基类虚原创 2020-11-05 13:33:00 · 911 阅读 · 0 评论 -
继承的学习——C++
继承继承(inheritance)机制是面向对象程序设计代码复用的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,我们成为派生类。继承定义定义格式继承方式和访问限定符继承方式public继承、protected继承、private继承访问限定符public访问、protected访问、private访问继承基类成员访问的变化[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xU1mncYB-16045540488原创 2020-11-05 13:29:35 · 885 阅读 · 0 评论 -
STL应用之stack、queue、priority_queue容器适配器
stackstack是一种container adapter(容器适配器),以某种既有容器作为底层结构,将其接口改变,使之符合先进后出(Frist In Last Out,FILO)的特点,默认情况下使用deque(双端队列)作为底层容器。stack的使用stack()构造空的栈bool empty()如当前堆栈为空,返回 true 否则返回falsesize_t size()返回当前堆栈中的元素数目value_type& top()返回对栈顶元素的引用原创 2020-11-01 11:51:01 · 874 阅读 · 0 评论 -
STL应用之list容器——C++
listlist允许在序列中的任何位置进行插入和删除,并且在前后两个方向进行迭代list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素list是为补充vector的缺点存在的,vector的缺点:1、头部和中部的插入效率低,O(N)需要挪动数据;2、插入数据空间不够需要增容,增容时需要开辟新空间、拷贝数据和释放旧空间,会付出很大的代价;vector的优点:1、支持下标的随机访问,简介的就很好的支持排序、二分查找和堆算原创 2020-10-30 21:21:18 · 768 阅读 · 0 评论 -
STL应用之vector容器——C++
vectorvector的定义vector()无参构造函数,构造一个空的vectorvector(size_type num, const value_type& val = value_type())构造一个初始放入num个值为val的元素的Vectorvector(const vector& from)拷贝构造函数#include<iostream>#include<vector>using namespace std;原创 2020-10-22 23:56:34 · 1910 阅读 · 0 评论 -
内存管理——C++
内存管理内存分布栈又叫堆栈,非静态局部变量/函数参数、返回值等,栈是向下增长的内存映射段是高效的IO映射方式,用于装载一个共享的动态内存库。用户可以使用系统接口创建共享内存,做进程间通信堆用于程序运行时动态内存分配,堆是可以上增长的数据段存储全局数据和静态数据代码段可执行的代码/只读常量int globalVar = 1;//数据段static int staticGlobalVar = 1;//数据段void Test(){ static int staticVar = 1;//原创 2020-10-07 12:22:01 · 2555 阅读 · 0 评论 -
类和对象(3)——C++
类和对象(3)构造函数(下)函数体内赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。Date(int year=0,int month=1.int day=1){ //函数体内赋值 _year=year; _month=month; _day=day;}初始化列表初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。Date(int year=0;int mon原创 2020-10-02 17:54:27 · 1596 阅读 · 0 评论 -
类和对象(2)——C++
类和对象(2)类的默认成员函数任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数初始化和清理构造函数——完成初始化工作析构函数——完成清理工作拷贝和复制拷贝构造——使用同类对象初始化创建对象赋值重载——把一个对象复制给另一个对象取地址重载主要是普通对象和const对象取地址构造函数构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。特性函数名与类原创 2020-09-26 13:47:06 · 1607 阅读 · 0 评论 -
类和对象(1)——C++
类与对象(1)类的定义class className{ //类体:由成员函数和成员变量组成};//后面加分号class为定义类的关键字,className为类的名字,{}中为类的主体类中的元素称为类的成员;类中的数据称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数;定义方式声明和方法全部在类体中class student{ void show() //显示信息 { cout<<name<<"原创 2020-09-13 21:08:39 · 1608 阅读 · 0 评论 -
基础入门——C++
C++基础第一个C++程序#include<iostream>//IO流using namespace std;//std C++标准库的命名空间int main(){ cout << "hello world" << endl; return 0;}使用cout标准输出和cin标准输入时,必须包含头文件和std标准命名空间;使用C++...原创 2020-04-17 00:02:09 · 1436 阅读 · 0 评论