【C++】
木孝溪
这个作者很懒,什么都没留下…
展开
-
【C++】多态
多态概念同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向父类的指针,来调用实现子类中的方法。ege:Person买火车票是全价,Student买火车票是半价多态的定义及实现构成多态的条件1. 被调用的函数必须是虚函数,且子类必须对父类的虚函数进行重写2. 调用虚函数的类型必须是指针或者引用3.一般使用父类的指针或者引用指向子类对象虚函数:...原创 2020-01-06 20:04:37 · 406 阅读 · 0 评论 -
【C++ 】继承
继承概念继承:如果一个类A继承于另一个类B,那么将A称做派生类或者子类,将B称作基类或者父类,继承可以让子类具有父类的各种变量和函数,所以不需要在进行编写父类的代码,即父类的成员(变量、函数)都会变成子类的一部分。成员函数存在代码段中继承格式 class A :public Bclass Person{public: void Cout() { cout << "na...原创 2020-01-04 20:14:40 · 573 阅读 · 0 评论 -
【C++】模板进阶
非类型模板参数就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用非类型模板参数可以是整形,指针和引用。,即(int,size_t,T*,T&),而浮点数、类对象以及字符串是坚决不允许作为非类型模板参数的。class Arr{public: T& operator[](size_t n) { return _arr[n]; }...原创 2019-11-19 20:23:07 · 112 阅读 · 0 评论 -
【C++】容器适配器之stack&queue&priority_queue
栈stack什么是栈栈是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。先进后出stack的常用接口函数名称功能简述stack(...原创 2019-11-17 19:40:28 · 150 阅读 · 0 评论 -
【C++】STL之deque
什么是duque是双向队列不规则的首字母缩写,双向队列是动态大小的序列式容器,其可以在两端进行插入,删除操作deque的常见接口1.构造函数函数名称功能简述deque()构造空的dequedeque(size_type n,const value_type& val=value_type())构造的deque包含n个val的数据deque(In...原创 2019-11-17 15:30:39 · 350 阅读 · 0 评论 -
【C++】List的模拟实现
自己实现一个List来加深对其的理解#include<iostream>#include<assert.h>using namespace std;template<class T>struct ListNode{ ListNode<T>* _pre; ListNode<T>* _next; T _val; Lis...原创 2019-11-16 21:34:47 · 113 阅读 · 0 评论 -
【C++】STL之list
基本概念list是一个计算机专业术语,在编程语言中List是类库中的一个类,可以简单视之为双向连结串行,以线性列的方式管理物件集合。list的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list常见接口1.构造函数函数名称功能简述list()构造空的listlist(size_type n,const value_type& v...原创 2019-11-16 14:15:40 · 251 阅读 · 0 评论 -
【C++】Vector类的模拟实现
自己写一个Vector的简单模拟实现,来加深自己对vector的理解#include<iostream>#include<assert.h>#include<string>using namespace std;template<class T>class Vector{ //typedef T* iterator;//放到这里默认认...原创 2019-11-14 18:18:45 · 183 阅读 · 0 评论 -
有关vector的迭代器失效问题
什么是迭代器失效在vector中因为插入、删除的操作,导致vector的空间发生改变,让其指向的那个位置的含义已经改变(可能原位置的空间已经被释放,也可能原位置的数据变成其原来相邻位置上的数据),从而导致iterator失效,因为每个容器的迭代器底层实现不同,所以导致它们失效的原因也不同,并不能因为vector是因为插入、删除导致的失效,就片面的认为所有的迭代器失效都是因为这个原因哪些操作导...原创 2019-11-13 21:25:20 · 219 阅读 · 0 评论 -
【C++】STL之vector
基本概念vector是Cpp标准模板库中的部分内容,但并不准确。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector类的常见接口1.构造函数函数名称功能简述vector()无参构造函数v...原创 2019-11-11 20:19:26 · 73 阅读 · 0 评论 -
【C++】String类的模拟实现
#include#include<assert.h>#pragma warning(disable:4996)using namespace std;//实现一个简单版的String(传统写法)//class String//{//public:// String(const char* str = “”)// {// _str = new char[strlen...原创 2019-11-10 15:24:49 · 63 阅读 · 0 评论 -
【C++】STL之String
STL简介什么是STLSTL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用安装额外的库文件。STL的版本原始版本:Alexander Stepanov、Meng...原创 2019-11-09 22:16:25 · 168 阅读 · 0 评论 -
【C++】内存管理
C和C++的内存分布内存主要分为:代码段、数据段、BBS段、栈、堆代码段:可执行代码、常量数据段:已经初始化了的全局变量和静态变量BBS段: 未初始化的全局变量和静态变量栈:局部变量、函数重载、临时变量、声明、返回值、指向堆对象的地址(指针)堆:动态分配内存,ege:new,malloc出来的东西内核空间用户不能读写栈地址向下增长堆地址向上增长数据...原创 2019-11-09 14:37:16 · 121 阅读 · 0 评论 -
【C++】 入门
命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。命名空间定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。...原创 2019-07-27 19:36:48 · 100 阅读 · 0 评论 -
【C++】 类与对象下
类的6个默认成员函数 空类,当你创建一个类时就比如是这样的Class Date (){};它此时占空间的大小为1,而不是0.是因为系统中会给他默认生成6个成员函数初始化和清理构造函数主要负责初始化析构函数主要负责清理拷贝复制拷贝构造使同类对象初始化并创建对象赋值重载把一个对象赋值给另一个对象取地址重载普通对象的取地址const对象的取地址class Date{priv...原创 2019-08-05 22:30:17 · 67 阅读 · 0 评论 -
【C++】Date类的实现
作为类与对象的初学者,写一个有关Date日期类算是对其最好的巩固了#pragma once#include<iostream>using namespace std;class Data{public: static int GetMonthDays(int year, int month) { static int arr[] = { 0,31,28,31,3...原创 2019-09-12 21:48:34 · 397 阅读 · 0 评论 -
【C++】类与对象 (拓展)
static成员 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态的成员变量一定要在类外进行初始 1.静态成员变量是被所有该类对象共享的,并不仅属于某个具体的对象 2.静态成员变量必须在类外定义,定义时且不可以添加 static 关键字 3.类静态成员访问方式类名::...原创 2019-09-18 21:33:12 · 84 阅读 · 0 评论 -
【C++】模板初阶
泛型编程假如我们需要实现一个简单的加法函数int Add(int a, int b){ return a + b;}float Add(float a, float b){ return a + b;}double Add(double a, double b){ return a + b;}一个简单的Add函数,都是同一个原理,但需要写三个函数,如果以后再写大型...原创 2019-09-26 16:59:12 · 97 阅读 · 0 评论 -
【C++】 类与对象 上
C语言与C++的区别?1.面向不同C语言面向过程面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步的实现,然后在使用的时候一一调用则可C++面向对象面向对象是把构成问题的事务分解成各个对象,而建立对象的目的也不是为了完成一个个步骤,而是为了描述某个事物在解决整个问题的过程中所发生的行为。用送外卖来举例C语言:先找到外卖小哥A,然后让A到指定的卖家那里去取指定的外卖,送到指定的...原创 2019-08-02 17:03:25 · 102 阅读 · 0 评论