
C++
banjitino
爱技术,爱生活。
展开
-
C++ multiset集合操练
C++ multiset集合操练#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <set>using namespace std;/*multiset是一个集合容器,其中所包含的元素可以不唯一,集合中的元素按一定顺序排列元素插入过程是按排序规则...原创 2020-02-13 17:24:55 · 285 阅读 · 0 评论 -
C++ set集合模型操练
C++ set集合模型操练#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <set>using namespace std; /* set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定顺序排列 元素插入过程是按排序规则插入,故不可...原创 2020-02-13 17:15:03 · 302 阅读 · 0 评论 -
C++ priority_queue优先级队列模型
#include <iostream>#include <queue>using namespace std;int main(){ priority_queue<int> p1;//默认最大值优先 priority_queue<int, vector<int>, less<int>> p2;//相当于p1 p...原创 2020-02-11 03:48:34 · 255 阅读 · 0 评论 -
C++ list容器
C++ list容器#include <iostream>#include <list>using namespace std; /* list是一个双向链表容器,可以高效地进行插入删除操作 list不可以随机存取元素,所以不支持[]操作符和*.at(pos)函数 it++;//right //it+5;//err//因为不能随机存取 */templ...原创 2020-02-11 03:31:11 · 194 阅读 · 0 评论 -
C++ queue队列模型基本操作
C++ queue队列模型基本操作#include <iostream>#include <queue>using namespace std;class Teacher{public: Teacher(int age) { this->age = age; } void printT() { cout << "age: "...原创 2020-02-11 02:48:54 · 259 阅读 · 0 评论 -
C++ stack<T>栈模型基本操作
C++ stack栈模型基本操作#include <iostream>#include <stack>using namespace std;class Teacher{public: Teacher(int age) { this->age = age; } void printT() { cout << "age: " ...原创 2020-02-11 02:33:31 · 388 阅读 · 0 评论 -
C++ deque容器的基本操作
C++ deque容器的基本操作#include <iostream>#include <deque>using namespace std;/*deque是将元素置于一个双向数组中加以管理的容器deque可随机存取元素(索引[]、at())deque在头部或尾部添加或删除元素非常快速,但是在中部插入或删除元素较为费时deque采用模板类实现容器元素的...原创 2020-02-11 02:08:02 · 631 阅读 · 0 评论 -
C++ vector容器的基本操作
C++ vector容器的基本操作#include <iostream>#include <vector>using namespace std; /* vector是将元素置于一个动态数组中加以管理的容器 vector可随机存取元素(索引[]、at()) vector在尾部添加或删除元素非常快速,但是在中部或头部插入或删除元素非常费时 vector采...原创 2020-02-11 01:31:00 · 375 阅读 · 0 评论 -
C++ string的操作及常用算法
C++ string的操作及常用算法#include <iostream>#include <string>#include <algorithm>using namespace std;int main(){ string s1 = "It's a string!"; string s2("string s2!"); string s3(2...原创 2020-02-11 00:16:45 · 705 阅读 · 0 评论 -
C++ 标准输入输出流
标准输入流#define _CRT_SECURE_NO_WARNINGS #include <iostream>using namespace std;/*cin.get() //一次只能读取一个字符cin.get(一个参数) //读一个字符cin.get(三个参数) //可以读字符串cin.getline()cin.ignore()cin.putback()...原创 2020-02-02 17:47:54 · 283 阅读 · 0 评论 -
C++ 异常的语法,栈解旋和接口声明,异常的生命周期、层次结构、标准异常库
通过异常可以使原本会发生宕机的异常被特殊处理。程序给出提示,但程序不崩溃。发生异常之后,是跨函数的接收异常之后,可以不处理,再抛出catch异常时,按照类型进行catch异常捕捉严格按照类型匹配#include <iostream>using namespace std;//1 发生异常之后,是跨函数的//2 接收异常之后,可以不处理,再抛出//3 catch异...原创 2020-02-02 15:23:24 · 225 阅读 · 0 评论 -
C++专属类型转换static_cast、reinterpret_cast、dynamic_cast、const_cast
C++ 风格的类型转换C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统都是TYPE b = (TYPE)a;C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。static_cast 静态类型转化。如int转换为charreinterpret_cast 重新解释类型dynamic_cast 动态类型转换。如子类和父类之间的多态类型转换co...原创 2020-02-02 14:28:00 · 183 阅读 · 0 评论 -
C++实现模板数组类
利用模板数组类,可以实现类似于容器的功能MyVector.h#pragma once#include <iostream>using namespace std;template <typename T>class MyVector{public: MyVector(int size = 0); MyVector(const MyVector&...原创 2020-01-31 15:30:52 · 1111 阅读 · 0 评论 -
C++ 类模板中的static关键字
对于不同的参数类型,static成员变量不共用,因为二次编译使不同参数类型的模板类分道扬镳,成为完全独立的两个类。#include <iostream>using namespace std;template <typename T>class A{public: static T m_a;protected:private:};template ...原创 2020-01-31 01:37:53 · 383 阅读 · 0 评论 -
C++ 泛型编程实现复数类
1. 所有函数都写在类的内部#include <iostream>using namespace std;//所有函数都写在类的内部没有出问题template <typename T>class Complex{ friend ostream& operator<<(ostream& out, Complex& c)...原创 2020-01-31 01:09:17 · 247 阅读 · 0 评论 -
C++ 类模板派生普通类和模板类
#include <iostream>using namespace std;//模板类,类型参数化////类模板的定义//类模板的使用//类模板做函数参数//模板类template <typename T>class A{public: A(T a = 0) { this->a = a; } void printA() { ...原创 2020-01-30 23:44:10 · 1144 阅读 · 0 评论 -
C++ 函数模板机制探究
C++ 函数模板机制探究1. 函数模板和函数重载在一起#include <iostream>using namespace std;//普通函数可以自动类型转换int Max(int a, int b){ cout << "int Max(int a, int b)" << endl; return a > b ? a : b;}/...原创 2020-01-30 02:49:37 · 415 阅读 · 0 评论 -
C++ 泛型编程:用函数模板做参数实现快排
利用函数模板实现泛型编程可以提供很大的方便#include <iostream>using namespace std;template <typename T>void myQuickSort(int left, int right, T* arr){ if (left > right) return; T base, temp; int i,...原创 2020-01-30 01:26:51 · 420 阅读 · 0 评论 -
C/C++ 函数指针做函数参数思想剖析
图解:代码实现#include <iostream>using namespace std;int myAdd(int a, int b){ printf("myAdd : %d\n", a + b); return a + b;}int myMulti(int a, int b){ printf("myMulti : %d\n", a * b); ret...原创 2020-01-27 15:46:47 · 183 阅读 · 0 评论 -
C++ 数组类型+函数指针语法总结
#include <iostream>using namespace std;//数组类型基本语法总结//定义一个数组类型//定义一个指针数组类型//定义一个指向数组类型的指针 数组指针int main01(){ int a[10]; { //定义一个数组类型 typedef int(myTypeArray)[10]; myTypeArray myAr...原创 2020-01-27 15:13:53 · 241 阅读 · 0 评论 -
C++ 抽象类实现计算雇员工资
抽象类实现计算雇员工资公司有三类雇员:管理员:Manger(按月薪发工资);钟点工:HourlyWorker(按工时和时薪发工资);计件工:PieceWorker(按月总工件数和工件单价发工资)实现如下:头文件employee.h#define _CRT_SECURE_NO_WARNINGS#include "employee.h"employee::employee(const...原创 2020-01-24 15:02:05 · 2159 阅读 · 1 评论 -
C++ 信息系统框架集成第三方产品
模拟公司信息系统框架继承第三方产品头文件CSocketProtocol.h#pragma once#include <iostream>using namespace std;class CSoketProtocl{public: CSoketProtocl() { ; } virtual ~CSoketProtocl() { ; } //客户...原创 2020-01-23 22:01:36 · 368 阅读 · 0 评论 -
C++ 纯虚函数的简单实现
纯虚函数的简单实现纯虚函数是一个在基类中说明的虚函数,在基类中没有定义,要求任何派生类都定义自己的版本纯虚函数为个派生类提供一个公共界面(接口的封装和设计、软件的模块功能划分)含有纯虚函数的类,称为抽象基类,不可实列化。即不能创建对象,存在的意义就是被继承,提供族类的公共接口。纯虚函数只有声明,没有实现,被“初始化”为0。如果一个类中声明了纯虚函数,而在派生类中没有对该函数定义,则该...原创 2020-01-22 23:18:52 · 4052 阅读 · 0 评论 -
C++ 多态原理探究
C++中多态的实现原理当类中声明虚函数时,编译器会在类中生成一个虚函数表;虚函数表是一个存储类成员函数指针的数据结构;虚函数表是由编译器自动生成与维护的;virtual成员函数会被编译器放入虚函数表中;存在虚函数时,每个对象中都有一个指向虚函数表的指针(vptr指针)。C++编译器为了实现多态会提前布局,在编译阶段就会为含有虚函数的对象添加一个vptr指针;因此,C++编译器根本...原创 2020-01-22 13:39:27 · 208 阅读 · 0 评论 -
C++ 重载重写重定义
重载(添加):相同的范围(在同一个类中)函数名字相同参数不同virtual关键字可有可无重写(覆盖)是指派生类函数覆盖基类函数,特征是:不同的范围,分别位于基类和派生类中函数的名字相同参数相同基类函数必须有virtual关键字重定义(隐藏)是指派生类的函数屏蔽了与其同名的基类函数,规则如下:如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtu...原创 2020-01-21 21:10:13 · 302 阅读 · 0 评论 -
C++ 虚析构函数
虚析构函数显然,构造函数不能是虚函数。但是析构函数可以是虚函数,用于指引delete运算符正确析构动态对象虚析构函数就是想通过父类指针直接释放子类资源#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;class A{public: A() { p = new char[...原创 2020-01-21 20:47:27 · 217 阅读 · 0 评论 -
C++ 多态案列:简单的怪物pk模拟
C++中通过virtual关键字对多态进行支持使用virtual声明的函数被重写后即可展现多态特性实现多态的三个条件:要有继承要有虚函数重写要有父类指针(引用)指向子类对象案例:#include <iostream>using namespace std;class HeroFighter{public: //加上virtual即采用动态联编(迟绑定)...原创 2020-01-21 20:24:19 · 593 阅读 · 0 评论 -
C++ 多态:赋值兼容性原则遇上函数重写
C++中的多态(polymorphism)是指,由继承而产生的相关的不同的类,其对象对同一消息会作出不同响应;赋值兼容规则:~是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代;赋值兼容是一种默认行为,不需要任何的显示的转化步骤。赋值兼容规则中所指的替代包括以下的情况:派生类的对象可以赋值给基类对象。派生类的对象可以初始化基类的引用。派生类对象的地址可以赋给指向基类的指针...原创 2020-01-21 19:58:14 · 257 阅读 · 0 评论 -
C++ 继承中同名变量处理方法
派生类的成员变量(函数)屏蔽基类的同名成员变量(函数)想调用基类的同名成员变量(函数),需要通过作用域分辨符::/*派生类的成员变量(函数)屏蔽基类的同名成员变量(函数)想调用基类的同名成员变量(函数),需要通过作用域分辨符::*/#include <iostream>using namespace std;class Base{public: int a; ...原创 2020-01-21 16:13:58 · 825 阅读 · 0 评论 -
C++ 继承和组合并存的构造析构原则
当父类构造函数有参数时,需要在子类的初始化列表中显式调用先构造父类,再构造成员变量(组合),最后构造自己先析构自己,再析构成员变量(组合),最后析构父类/*当父类构造函数有参数时,需要在子类的初始化列表中显式调用先构造父类,再构造成员变量(组合),最后构造自己先析构自己,再析构成员变量(组合),最后析构父类*/#include <iostream>using nam...原创 2020-01-21 16:00:11 · 209 阅读 · 0 评论 -
C++ 继承的类型兼容性原则
继承的类型兼容性原则#include <iostream>using namespace std;class Parent{public: Parent(); ~Parent(); void printP() { cout << "我是基类。。。" << endl; }private: int a;};class Child...原创 2020-01-21 15:12:35 · 331 阅读 · 0 评论 -
C++ 引用、匿名函数、对象管理、重载的重点总结
//...省略struct Teacher{ int age; char name[20];};//1 指针的引用void getT(Teacher*& myp){ myp = new Teacher; myp->age = 23;}//3&4 复制构造函数的第4种调用时机// 函数返回值是一个元素时,返回的是匿名对象(去和留)myString...原创 2020-01-20 17:48:31 · 362 阅读 · 0 评论 -
C++ 用重载自定义string类
myString.h#pragma once#include <iostream>using namespace std;class myString{public: myString(); myString(int len); myString(const myString& Str); myString(const char* str); ~mySt...原创 2020-01-20 16:30:05 · 296 阅读 · 0 评论 -
C++ 重载String字符串类
myString.h#pragma once#include <iostream>using namespace std;class myString{public: myString(); myString(int len); myString(const myString& Str); myString(const char* str); ~mySt...原创 2020-01-18 20:33:40 · 778 阅读 · 0 评论 -
C++ 二元运算符和一元运算符的两种重载方法
友元关系是单向、独立的,不具备传递性。友元使得非成员函数可以访问类的私有成员,可以定义在类的任何位置。以下是利用友元函数或成员函数重载二元运算符+、一元运算符++/--和操作符<<Test.h//Test.h#pragma once#include <iostream>using namespace std;class Test{public: T...原创 2020-01-18 20:28:21 · 1201 阅读 · 0 评论 -
C++ 判断两个圆是否相交
定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;定义一个圆Circle类,其属性包括圆心和半径;创建两个圆形对象,提示用户输入,判断两圆是否相交。#include <iostream>#include <cmath>using namespace std;class Point{public: Point(); ~Point()...原创 2020-01-17 12:40:21 · 1840 阅读 · 0 评论 -
C++ 内联函数
内联函数在编译时直接将函数体插入函数调用的地方;在最终生成的代码中没有定义inline是对编译器的一种请求,不一定被通过。内联函数函数体内不能存在循环和过多的条件判断,不能进行取址操作,函数体不能过于庞大,否则请求失败,内联函数编译为普通函数。内联函数省去了普通函数调用时压栈、跳转、返回的开销。 inline void printA() { printf("just print"...原创 2020-01-16 16:50:40 · 133 阅读 · 0 评论 -
C++ 和 C 的关系、区别
1. C++对C语言的加强1. namespace命名空间1)当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。若不引入using namespace std,需要这样做。std::cout。2)c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。3) C++命名空间的定义: n...原创 2020-01-16 16:35:02 · 2975 阅读 · 0 评论 -
C++实现批量创建二级目录
在已有二级目录结构(字符串数组)的情况下批量创建二级目录#include <direct.h>#include <io.h>#include <iostream>#include <string>using namespace std;//基于DOSint CreateFolderByDos(string strName){ st...原创 2019-11-22 18:52:14 · 393 阅读 · 0 评论 -
C++实现选择排序
选择排序选择排序(SelectSort)是一种简单直观的排序算法。算法原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。#include<iostream>using namespace std...原创 2019-11-03 18:18:08 · 1819 阅读 · 1 评论