
C++ 学习
一起学习 C++
-
原创
图的基础(C++)
DenseGraph.h#ifndef DENSEGRAPH_H_INCLUDED #define DENSEGRAPH_H_INCLUDED#include <iostream> #include <algorithm> #include <string> #include <vector> #include <cassert> #include <ctime>using namespace st2017-03-15 21:11:35 阅读数 668 评论数 2 -
原创
二分搜索树常见操作(C++版)
#include <iostream> #include <algorithm> #include <string> #include <ctime> #include <cmath> #include <cassert> #include <queue>using namespace std;template <typename Key,typename Value> class BST{ pub2017-03-14 10:57:13 阅读数 590 评论数 1 -
原创
C++之模板(友元函数+友元类+静态Static)
友元函数 友元函数分为友元全局函数和友元成员函数。 下面是一个友元全局函数的例子:class Coordinate { friend void printXY(Coordinate &c);public: Coordinate(int x, int y);private: int m_iX; int m_iY; };友元函数的应用void printXY(Coo2017-03-05 20:57:52 阅读数 1351 评论数 0 -
原创
C++之多态(纯虚函数+RTTI+异常处理)
纯虚函数 纯虚函数是指没有函数体,定义时在函数名后加上=0,如下代码所示class Shape { public: virtual double calcArea()//虚函数 {return 0;} virtual double calcPerimeter()=0;//纯虚函数 protected: int m_iEge; };在虚函数指针指向的虚函数表中,ca2017-03-05 15:59:09 阅读数 405 评论数 0 -
原创
C++之多态(静态多态+动态多态+虚函数+虚析构函数+多态原理[未完待续])
多态(静态多态+动态多态) 多态是面向对象的三大特征(封装,继承,多态)之一。 教科书定义:指相同对象接收不同消息或不同对象接到相同消息产生不同的动作。简单来说就是当发出一条命令时,不同的对象接收到同样的命令时,所做出的动作是不同的。静态多态(早绑定) 如下代码,两个一样的函数名,但是参数不同,在调用时,程序会根据参数不同调用不同函数。因为程序很早就把这种情况编译进去,这就情况就叫静态多态。c2017-03-05 11:10:12 阅读数 295 评论数 0 -
原创
C++之指针(对象指针+对象成员指针+this指针[待补充])
对象指针 对象指针就是指针指向一个对象。class Coordinate//坐标系上的点 { public: int m_iX; int m_iY; }; Coordinate *p = new Coordinate;//在堆中实例化 在实例化时,p的指针实际指向的是m_iX,在实例化对象时,下列代码中的注释部分也是符合语法的。int main() { Coordinate2017-03-03 17:36:34 阅读数 424 评论数 0 -
原创
并查集及优化(C++)
#include <iostream> #include <algorithm> #include <string> #include <cassert> using namespace std; /* //查找快,但是合并差 class UnionFind1{ private: int *id; int Count;public: UnionFind1(int n){2017-03-14 23:11:40 阅读数 665 评论数 1 -
原创
C++之继承(继承方式+隐藏+覆盖)
我们在定义对象的时候,会发现很多的对象之间都是有联系的,如以下两个类:class Person { public: void eat(); string m_strName; int m_iAge; };class Worker { public: void eat(); void work(); string m_strName; int m2017-03-03 23:04:35 阅读数 660 评论数 0 -
原创
C++之继承(多重继承+多继承+虚继承+虚析构函数+重定义)
多重继承和多继承 这个我们来讲讲这两个的概念问题,一字之差,千差万别。 多重继承,比如有三个类,人类-士兵类-步兵类,三个依次继承,这样的继承称为多重继承。class Person {};class Soldier :public Person {};class Infantryman :public Soldier {};多继承是如果一个类有多个基类,比如农民工类继承了农民类和工人类。clas2017-03-04 13:07:54 阅读数 1240 评论数 0 -
原创
C++之对象数组+对象成员+拷贝构造函数(深/浅)
对象数组实例(栈中实例化和堆中实例化):class Coordinate { public: int m_iX; int m_iY; };int main() { Coordinate coord[3];//栈中实例化 coord[1].m_iX = 10; Coordinate *p = new Coordinate[3];//堆中实例化 p[0].2017-03-03 15:47:42 阅读数 4080 评论数 0 -
原创
C++之内联函数+类内/外定义+构造函数+初始化列表+析构函数
内联函数: 关键字是inline,如下应用:inline void fun() { cout << "hello " << endl; }内联函数与普通函数的区别如下:(相当于内联函数省去了步骤2和4) 类内定义:将函数的函数体定义在类内。 类内定义与内联函数的关系:类内定义就是默认为inline内联函数。类外定义: 类外定义就是函数体在类外面,分为同文件类外定义和分文件类外定义。在2017-03-03 11:11:35 阅读数 1357 评论数 0 -
原创
C++之string
在C++中我们用string来代替在C语言中char类型很多单操作的繁琐。 初始化string对象的方式: string的常用操作: 注意:string str="Hello"+"World"//双引号引起的字符串通过加号链接是非法的下面以一段代码来体会一下string的快感/*题目描述: 1.提示用户输入姓名 2.接收用户的输入 3.然后向用户问好,hello xxx2017-03-02 19:34:49 阅读数 206 评论数 0 -
原创
C++之内存管理
我们在了解内存管理之前首先要明白以下三点: 1.内存的本质是资源 2.操作系统掌管着内存的资源 3.程序员可以做的是申请/归还这种资源内存的申请与释放申请/释放一个内存: int *p=new int delete p 申请/释放块内存 int *arr=new int[10]; delete []arr; 申请内存注意事项: 我们要知道实际上在申请内存的时候我们不一定能申请成功,因为可能碰2017-03-02 17:44:26 阅读数 177 评论数 0 -
原创
C++之const关键字
Update:2018/04/19 若定义一个整型变量int x=10,那么 变量名:x 存储地址:&amp;x 存储内容:10 如果是const int x=10,那么 变量名:x 存储地址:&amp;x 存储内容:10 其中const的存储内容10(加粗斜体)代表的是常量,从此不再改变。 PS:对于C++来说它的const用法和C不太一样,若定义一个常量,常量以及值存储在一...2017-03-02 17:23:10 阅读数 146 评论数 0 -
原创
C++之语言引用
引用就是指变量的别名。就如人有外号一样,我叫赵四,外号尼古拉斯,实际上都是指赵四这个人。 程序1: #include &lt;iostream&gt; using namespace std; int main() { int a=3; int &amp;b=a;//引用必须初始化,int &amp; 是引用数据类型 b=10; cout&lt;&lt;...2017-03-02 16:45:16 阅读数 166 评论数 0 -
原创
C++之栈的实现
MyStack.hclass MyStack { public: MyStack(int Size);//分配内存初始化栈空间,设定栈容量,栈顶 ~MyStack();//回收栈空间内存 bool stackEmpty();//判定栈是否为空 bool stackFull();//判定栈是否满 void clearStack();//清空栈 int s2017-03-02 15:16:18 阅读数 807 评论数 0 -
原创
C++之环形队列的实现
MyQueue.hclass MyQueue { public: MyQueue(int queueCapacity);//创建队列 virtual ~MyQueue();//销毁队列 void ClearQueue();//请空队列 bool QueueEmpty() const;//判空队列 bool QueueFull() const;//队列判满2017-03-02 11:02:12 阅读数 1371 评论数 0