c++
Nou_Camp
这个作者很懒,什么都没留下…
展开
-
C++智能指针(二)模拟实现三种智能指针
在上一篇博客中提到了Auto_ptr(C++智能指针(一)),下面进行模拟实现Auto_ptr 采用类模板实现#include<iostream> using namespace std; template<class T> class Autoptr { public: Autoptr(T* ptr = NULL) :_ptr(ptr) {} //Auto原创 2017-04-15 20:34:40 · 1309 阅读 · 0 评论 -
C++异常
异常处理 异常处理机制允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应的处理。异常使得我们能够将问题的检测与解决过程分离开来。异常的抛出和捕获 在C++中,我们通过抛出一条表达式来引发一个异常。被抛出的表达式的类型以及当前的调用链共同决定了哪段代码将被用来处理该异常。被选中的处理代码是在调用链中与抛出对象类型匹配的最近的代码。 当执行原创 2017-04-19 12:40:48 · 433 阅读 · 0 评论 -
C++智能指针(三)总结
在上一篇博客中(C++智能指针(二))模拟实现了三种智能指针。 其中最好的就是shared_ptr,但是这并不代表它就是最完美的,它也有问题,这个问题就是循环引用问题。下面用一段代码来解释说明循环引用问题。#include<memory> struct ListNode { shared_ptr<ListNode> _next; shared_ptr<ListNode> _pre原创 2017-04-16 15:36:59 · 487 阅读 · 0 评论 -
c++实现顺序表
c++实现顺序表#include<iostream> #include<assert.h> using namespace std; #pragma warning(disable:4996) typedef int DataType;class Seqlist { public: Seqlist() //构造函数 :_a(NULL), _size(0), _capacity原创 2017-03-30 13:58:18 · 497 阅读 · 0 评论 -
c++实现单链表
c++实现单链表 函数可在头文件中声明,在调用头文件#include<iostream> using namespace std; typedef int DataType; class LinkNode { public: DataType data; LinkNode *next; LinkNode() { data = 0;原创 2017-03-30 14:03:20 · 483 阅读 · 0 评论 -
c++继承(一)
c++继承(一) 代码具体分析在图中#include<iostream> using namespace std;class A { public: A() { cout << "A()" << endl; } void fun() { cout << "A::fun()" << endl; } public:原创 2017-04-05 21:19:00 · 302 阅读 · 0 评论 -
c++继承(二)菱形继承
在c++(一)中,写的程序是单继承(即一个子类只有一个父类) 下面将写一个多继承程序(即一个子类有两个或两个以上的父类) 多继承是c++的一个缺陷#include<iostream> using namespace std;class A { public: A() { cout << "A()" << endl; } void fun()原创 2017-04-06 18:08:05 · 336 阅读 · 0 评论 -
c++继承(三)多态
多态:从字面意思不难理解为多种状态 构成多态的两个必要条件 (1)虚函数的覆盖(重写) 子类与父类一模一样的函数,子类覆盖了父类的虚函数 (2)父类的指针或者引用指向对象 重写:作用域不同,函数名相同(析构函数特殊),参数相同,返回值相同 虚函数:类的成员函数前加virtual关键字(必须是类的成员函数),在类内声明为虚函数时加virtual,在类外实现时不需要加virtual 构造函数原创 2017-04-06 18:21:52 · 323 阅读 · 0 评论 -
C++模板类实现单链表
c++模板类实现单链表#include<iostream> using namespace std; #include<assert.h> #include<string> template<class T> struct LinkNode { LinkNode<T>* _next; T _data; LinkNode(const T& x) :_data(x原创 2017-04-08 17:15:14 · 4735 阅读 · 1 评论 -
C++实现双链表
C++实现双链表#include<iostream> #include<assert.h> using namespace std; typedef int DataType; struct ListNode { DataType _data; ListNode *_next; ListNode *_prev; ListNode(const DataType x)原创 2017-04-09 10:37:48 · 320 阅读 · 0 评论 -
C++模板类实现顺序表
C++模板类实现顺序表#include<iostream> #include<assert.h> #include<string> using namespace std; #pragma warning(disable:4996)template<class T> class Seqlist //定义一个顺序表的类 { public: Seqlist() //构造函数 :_原创 2017-04-09 15:40:36 · 797 阅读 · 1 评论 -
C++类模板的特化
C++类模板的特化分为两种,一种是全特化,另一种是偏特化。 下面这个例子就是全特化#include<iostream> using namespace std;template<class T> class SeqList { public: SeqList(); ~SeqList(); private: int _size; int _capacity;原创 2017-04-10 18:12:13 · 819 阅读 · 0 评论 -
C++模板
模板是泛型编程的一种,所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用方式,模板分为模板类和模板函数 下面是几个普通的函数调用 #include using namespace std; bool IsEqual(int left, int right) { return left == right; } bool IsEqual(const string& left, con原创 2017-04-10 20:45:59 · 354 阅读 · 0 评论 -
C++继承(四)对象模型
*虚函数表:虚函数表是通过一块连续的内存来存储虚函数的地址 下面是一段程序class A { public: virtual void fun1() {} virtual void fun2() {} private: int a; }; void test() { A s; }int main() { test(); system(原创 2017-04-13 11:34:42 · 392 阅读 · 0 评论 -
模拟实现STL (双)链表
#include<iostream> using namespace std; #include<assert.h> #include<list> #include<vector> template<class T> struct _ListNode { T _data; _ListNode<T>* _next; _ListNode<T>* _prev; _List原创 2017-05-02 00:07:33 · 323 阅读 · 0 评论 -
C++强制类型转换
static_cast static_cast⽤于⾮多态类型的转换(静态转换),任何标准都可以⽤它,但它不能⽤于两个不相关的类型进⾏转换。对应于C的隐式类型转换。 void test() { int i = 1; double j = static_castint>(i); printf("%d, %.2f\n", i, j); } reinterp原创 2017-04-21 18:47:03 · 343 阅读 · 0 评论 -
C++智能指针(一)智能指针的简单介绍
C++智能指针 在正式了解智能指针前先看一下下面的一段代码#include<iostream> using namespace std; class A { public: A() :_ptr(NULL), _a(0) {} ~A() {} public: int* _ptr; int _a; };void test() {原创 2017-04-14 23:40:18 · 570 阅读 · 0 评论 -
指针和引用
指针和引用引用 引用:引用不是一个新的变量,而是一个已经存在的变量的别名。比如你同学在学校叫你王五,回到家里,家里人叫你小王一样,虽然叫法不同,但实际上指的都是一个人。 下面看一段代码void test() { int a = 1; int e = 4; int &b = a;//引用的格式:类型 &引用变量名=已定义过的变量名 //int &b;//这样是非法的原创 2017-04-17 17:15:58 · 290 阅读 · 0 评论 -
基于HTML5的简单的websocket客户端
一个简单的websocket客户端 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket Client</title> </head> <body> <scr原创 2018-08-08 15:05:23 · 1846 阅读 · 0 评论