
c++
优秀005
这个作者很懒,什么都没留下…
展开
-
Date日期类的实现
用c++实现一个日期类,可实现: 1.日期加或减一个天数,之后的日期; 2.两个日期之间差多少天; 3.对日期进行++(后置) 或 – (后置) 操作; 4.对日期进行++(前置) 或 – (前置) 操作;。。。。。。原创 2017-03-28 13:35:05 · 953 阅读 · 1 评论 -
c++模板之萃取
假如,我们要设计一个_Copy的模板函数。我们为了提高效率采用memcpy,可以这样写:template<typename T>T* _Copy(T* dest, T* src, size_t n){ memcpy(dest, src, sizeof(T)*n); return dest;}我们知道一般的类型(比如int,float,double,char等)进原创 2017-05-04 11:28:36 · 1060 阅读 · 0 评论 -
模板实现顺序表
模板实现c++顺序表,实现基本功能:源代码及测试:#include #include using namespace std;template class SeqList{public: SeqList() :_arr(NULL) , _size(0) , _capacity(0) {} SeqList(const SeqList& seq)//拷贝构造原创 2017-04-22 11:02:46 · 504 阅读 · 0 评论 -
模拟实现vector
#include <iostream>#include <string>using namespace std;template <typename T>class Vector{public: typedef T* Iterator; typedef const T* constIterator;public: Vector()//构造函数 :原创 2017-04-22 11:14:24 · 339 阅读 · 0 评论 -
模板实现双向链表
c++模板实现双向链表:#include <iostream>using namespace std;template<typename T>struct ListNode { T _data; ListNode<T>* _prev; ListNode<T>* _next;};template<typename T>class List{ typedef原创 2017-04-23 08:46:10 · 637 阅读 · 0 评论 -
模板的分离编译
有下面两代码:1、普通类函数:我们把类的声明和定义分开:array.h:#pragma once#include <iostream>using namespace std;class ArrayNonT{public: ArrayNonT();//构造函数 void PushBack(int x);protected: int _a[100]; size_t _原创 2017-04-23 21:06:22 · 601 阅读 · 0 评论 -
设计一个类不能被继承
1.设计一个类不能被继承我们知道,一个类不能被继承,即构造不出来对象,在继承体系中:public继承:基类的public成员在派生类中仍为public成员;基类的protected成员在派生类中为protected成员;基类的私有成员,派生类不可见;protected继承:基类的public成员在派生类中变为protected成员;基类的protected成员在派生类中为protected成员;基类原创 2017-07-15 09:51:11 · 936 阅读 · 0 评论 -
c++STL内存池和空间配置器
c++STL内存池和空间配置器为什么需要空间配置器?内存碎片问题:在软件开发,程序设计中,我们不免因为程序需求,使用很多的小块内存(基本类型以及小内存的自定义类型)。在程序中不断动态申请,释放。这个过程过程并不是一定能够控制好的,于是乎,问题1:就出现了内存碎片问题。(外碎片问题)问题2:一直在因为小块内存而进行内存申请,调用malloc,由于内存空间是由操作系统管理的,当我们要去开辟时,必然要进行原创 2017-07-29 23:47:11 · 2242 阅读 · 0 评论 -
浅拷贝、深拷贝与引用计数
用模拟实现string来分析浅拷贝、深拷贝、引用计数。。。。。。。。原创 2017-04-04 16:04:18 · 661 阅读 · 0 评论 -
智能指针发展
智能指针就是智能/自动化的管理指针所指向的动态资源的释放。并且可以向指针一样使用。1、早期auto_ptr—是一种失败的设计,有设计缺陷为了解决对象中指针的重复释放,采用管理权转移的方式。即在解决对象的赋值、拷贝构造时,比如:a = b;将a的地址空间释放,然后将b.ptr的指针赋给a.ptr,最后将地址空间的管理权交付于a.ptr,并将b.ptr致null。因此,在赋值过后,将不能使用原来指针,缺原创 2017-05-11 20:03:06 · 407 阅读 · 0 评论 -
从一个通用加法程序看模板
在以往如果我们要写一个通用的加法程序,以实现任意类型相加(比如:整形相加、字符型相加、双精度/单精度相加、整形加字符型、整形加双精度型......)我们可有以下几种方法:1、采用函数重载:针对每个所需相同行为的不同类型重新实现例如:int add(int left, int right)//整型相加{ return left + right;}double add原创 2017-04-16 17:19:57 · 778 阅读 · 0 评论 -
c++之虚函数
在同一类中不能定义两个名字相同、参数个数和类型都相同的函数,否则,将会重复定义;但是在类的继承层次中可以出现名字相同,参数列表相同而功能不同的函数,这是合法的,因为他们不在一个类中,但是,如果直接调编译系统将会按照同名覆盖的原则决定所调用的函数。例如:class B{public: void test() { cout << "B::test()" << endl原创 2017-04-08 12:41:50 · 1008 阅读 · 0 评论 -
c++多态
一个事物具有多种形态,在c++中指具有不同功能的函数可以用同一个函数名,这样据可用用一个函数名调用不同内容的函数,在面向对象方法中也可这样表述:向不同的对象发送同一个消息,不同的对象在接收时会发生不同的行为,即每个对象可以用自己的方法去响应共同的消息。二、类别:1、静态多态(静态绑定/早绑定/):对象声明时的类型,是在编译时确定的,在程序编译时系统就能决定调用那个函数,因此静态多态又称编译时原创 2017-04-08 13:40:22 · 502 阅读 · 0 评论 -
浅析this指针(c++)
this指针理解,类的存储方式。。。。。。原创 2017-03-13 15:43:21 · 547 阅读 · 0 评论 -
多态之虚表剖析1
对于有虚函数的类,编译器都会维护一张虚表,对象的前四个字节就是指向虚表的指针如下面代码:#include <iostream>using namespace std;class B{public: B() { _b = 10; cout << "this = " << this << endl; } virtual void t原创 2017-04-09 14:47:12 · 483 阅读 · 0 评论 -
Vector的简单使用
vector的简单概念介绍、成员函数的使用、创建方法等。。。。。。。。。。原创 2017-04-02 13:42:01 · 953 阅读 · 0 评论 -
虚拟继承剖析
在现实生活中,一个对象经常不止继承一个事物的属性,在类的继承体系中也同样如此,这样就不得不采用多重继承,C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。但是由于多重继承时,在派生类中访问基类成员路径不明确,而经常出现程序出错,为了解决这种错误,我们除了可以加作用域限定符来明确路径外,c++也提供采用虚拟继承来解决此问题。。这里我们用菱形继承为例,先不用虚拟继承,如下面代码,假如我们原创 2017-04-18 18:03:28 · 570 阅读 · 0 评论 -
多态之虚表剖析2
在一个既有虚继承又有虚函数的继承体系里,它的内存布局对象模型是怎么样的呢??以菱形虚拟继承为例:1、没有覆盖如下代码:#include <iostream>using namespace std;class B{public: virtual void funtest1() { cout << "B::funtest1()" << endl; }原创 2017-04-19 12:49:14 · 500 阅读 · 0 评论 -
c++继承初识
简单介绍如何理解继承,及继承中相关概念原创 2017-04-06 18:06:43 · 674 阅读 · 0 评论 -
公司员工管理系统(C++继承、多态)
公司员工信息管理系统:(使用C++实现)1、输入:txt文本,包含员工信息、性别、年龄、工号、部门、职位(职员、部门经理、总经理)等信息。2、要求功能: 添加、删除、修改员工信息; 员工显示排序(能够根据任意信息排序)。 根据某员工查询其上下级员工; 能够输出所有信息。3、需要使用知识点:类继承、多态、vector/map容器。源代码:1、头文件:...原创 2018-03-25 16:59:15 · 11305 阅读 · 7 评论