自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

晴。

学习记录,分享。

  • 博客(19)
  • 收藏
  • 关注

原创 数组类—DynamicArray

DynamicArray上一篇说到了数组类的一种具体对象,这篇里面来说另一种。就是DynamicArray,既然StaticArray已经够好了,为什么还要有DynamicArray呢。就如同前几片博客里讲的基于顺序存储结构的线性表的两种实现一样,我们想让这个对象可以动态的改变自己的存储空间的大小,这样就会更加灵活。设计要点:类模板在堆中申请一定的空间作为存储空间

2017-11-28 20:27:53 4755

原创 数组类—StaticArray

StaticArray上一节数组类的抽象类里我们在程序里构造的Array类里定义了成员的地址变量,有了可以返回数组的大小的方法,也通过下标合法性的检查避免了数组越界的问题,但是还有一个问题没有解决,就是数组之间可以赋值。在这篇博客里,我们新创建的一个类继承自Array类,然后去客服数组间不能互相赋值的问题。设计要点:类模板封装原生数组实现函数返回数组长度拷贝

2017-11-28 19:05:21 742

原创 数组类

数组类开发理由:原生的数组创建后没有大小的概念原生数组对越界访问只有警告,不易发现数组变量之间不能互相赋值设计要点:抽象类模板存储空间的位置和大小由子类完成提供数组长度的抽象函数[]操作符重载,判断下标是否合法同类型对象间的复制操作代码表现:template class Array : public Object{prot

2017-11-28 14:30:29 288

原创 顺序存储结构线性表—DynamicList

DynamicList在上一片博客里说到了一种基于顺序存储结构的实现,即StaticList,这一篇说另外一种DynamicList。这个类也要继承SeqList类,初始化父类的成员变量和重写capacity。StaticList和DynamicList都是继承自SeqList,大部分的实现都是一样的,那么不一样的就是DynamicList相比于StaticList来说,它的大小是可以

2017-11-27 23:41:37 369

原创 顺序存储结构线性表—StaticList

StaticList在顺序存储结构里说到了基于顺序存储结构的有两种具体的实现,一种就是StaticList。而且也说道了这个类要继承SeqList类,而且要初始化父类的成员变量和重写capacity,并且实现方法的具体操作。设计要点:类模板使用原生数组作为顺序存储空间使用模板参数决定数组的大小程序表现:template class Stati

2017-11-27 19:54:31 181

原创 线性表的顺序存储结构

线性表的顺序存储结构顺序存储定义:线性表的顺序存储结构,是指用一段连续的内存空间一次存储线性表中的数据元素设计思路:使用一位数组实现,直接申请一段大小固定的连续的内存空间程序表现:class SeqList : public List{protected: T* m_array; int m_length;public: bool inse

2017-11-27 17:52:00 281

原创 线性表

线性表抽象定义:具有相同类型的n(n>=0)个数据元素的有限序列。表现形式:1、数据元素类型相同2、零个或多个数据元素的集合,个数必须有限3、元素之间是有序排列的性质:1、第一项只有一个后继2、最后一项只有一个前驱3、除首尾项,其它每一项都有一个前驱和一个后继常用操作:1、元素插入2、元素删除3、获取指定位置的元素

2017-11-27 17:31:07 133

原创 C++——类型转换

c语言里的基础类型,char,short,int,uint,long.ulong,float,double,他们在表达式里是有隐式类型的转换,做运算时,默认转换为右值的最大类型,然后运算,得出结果后强转为左值的类型赋值给左值,期间char,short一定是先转换为int类型,而且基础类型里无符号大于有符号。C++里也满足这样的关系,但是现在有类了,类和基础数据类型怎么进行转换呢。如果基础数据类

2017-11-19 16:16:30 213

原创 C++——逻辑操作符的危险

C++的逻辑操作符我们在C语言里就一直用,从来没遇到过什么危险的事,因为一直是按照想法执行的。为什么会有危险。因为C++里操作符的重载。先来了解一下前提。1操作符的重载的本质是函数的调用。2逻辑操作符从做往右执行,满足短路规则,即不用计算完就可能得到结果。这里所说的逻辑操作符就是因为操作符的重载出现的。我们通过一个例子说明。class Test{ int mValue;

2017-11-18 19:03:27 248

原创 C++——智能指针

这里所说的都不是STL里的东西,只是简单的模仿一下。程序里一般我们将一些常用的,不是临时的对象放在堆上,堆的空间是比较大的。但是如果我们只是不停的动态申请但是忘记在不使用的时候归还就会造成内存泄露。有时候我们也会因为同一块内存空间被多个指针指向,在释放时造成多次释放的问题。为了避免这些,所以我们试着来创建一个特殊的指针。1在生命周期结束的时候直接释放掉堆里的内存空间2且这个指针指向的内

2017-11-17 19:36:18 260

原创 C++——函数对象

函数对象其实就是一个类的成员函数重载了()操作符,我们就可以使用varName(......)的方式调用一段函数。那么我们为什么需要用函数对象来调用函数呢?1函数对象可以根据不同的构造方法生成初始状态不同的函数。 2函数对象可以在类里面有自己的成员变量,这个成员变量可以记录当前函数的状态。3参数列表传入函数对象比指针更加安全。这里的状态的优势可以使用普通函数和局部的静态变量,但

2017-11-17 17:27:52 283

原创 C++——操作符重载

我们知道c++里的函数重载,那么操作符是不是也可以重载呢,?既然说出来肯定是有的。操作符重载有什么意义呢。比如我们定义一个复数类,让对象可以互相进行加减乘除。原生的加减乘除是不支持我们这么操作的,所以我们需要让这个操作符支持,让这个操作符实现重载,基础类型还是原生意思,我们说的复数类就用承载的操作符的操作。操作符的重载其实是一个函数实现的,本质也是去找到匹配的函数进行调用函数。成员函数和全局函

2017-11-15 22:58:26 189

原创 C++——静态成员

学习了一些累得基础知识,知道了,在类的作用域外要通过类去实例化对象,然后访问里面的成员。思考一下,如何去实现一个统计类对象个数的程序设计呢,最笨的办法我们可以在类里加一个方法,进行自加,然后初始化对象后就调用这个方法。这个可以实现一大部分需求。然后说这个的不足,如果我们没有对象,应该怎么去调用那个方法返回一个0值呢?还有如果我们的对象个数不为0,我们每次都需要手工调用,就如同我们当时想着自己初

2017-11-14 22:32:57 134

原创 C++——临时对象

class Test{ int t;public: Test() { Test(0); } Test(int rec) { t = rec; } int getVal();};int Test::getVal(){ return t;}这个程序,比较简单,说一下产生问题的

2017-11-13 17:31:09 210

原创 C++——析构函数

前面我们知道一个对象创建后,需要自动调用构造函数去进行初始化,避免我们操作时引出问题。那么今天有一个类似的问题,就是当一个对象不再需要时,它会占着一些操作系统的资源,比如一直占着内存,慢慢我们的内存就不足了,所以看的出来,当一个对象不再需要时我们需要释放这个对象占用的系统资源,比如释放内存,关闭文件和端口的使用权。我们可以在public的访问权限处添加一个一个free函数,去做一些处理上述问题

2017-11-13 14:13:04 176

原创 C++——对象构造顺序

程序里不可能只有一个对象,我们的程序里处处都是对象,那么对象的构造顺序是怎么样的呢。还是按照在内存四区上的分布来分开说,此处不在说代码段。如果对象是在栈上分配的,那么肯定是在函数中创建的,只要main函数开始执行,就有了程序执行流,所以分配在栈上的对象的构造顺序是按照顺序执行流和对象的定义语句来确定先后顺序的。如果对象在分配在堆上的,那么我们值需要跟着程序执行流找到new出现的先后顺序

2017-11-12 10:54:32 495

原创 C++——初始化列表

我们已经知道const变量在C++里成了真正意义上的常量了,const变量的值保存在符号表里,虽然某些操作也会为其分配内存,但是值并不会保存在那块分配的内存。既然是常量,所以我们不能在程序里作为左值,所以必须在定义的时候就初始化,但是类成员变量粗了static const int成员变量,其他类型的都只能定义,不能定义的时候初始化,那么我们可以在类里提供一个const类型的成员变量嘛?编译器是允许

2017-11-11 23:31:30 177

原创 C++——构造函数

首先问一下自己,为什么有构造函数呢?我们在类里定义了成员变量,但是只是定义了,我们却并没有初始化,那么当使用类定义一个对象的时候它的成员变量的值都是些什么呢?程序里有内存四区,除去代码段,还有三个位置,栈,堆,数据区(包括常量区和静态/全局区),凭借在C语言里的经验知道堆和栈上的变量值是随机的,数据区的是0,对象也是变量,所以符合规则,那我们定义了对象后成员变量的值是不确定的,那么我们的成员方

2017-11-11 22:13:41 181

原创 C++——类的基础知识

类通常包括两部分:类的内部实现和类的使用方式。当我们创建一个类时,我们需要考虑去怎么实现,使用的时候不需要考虑细节,不用想怎么去实现。首先我们给出一个简单的类class Test{public: Test() { v = 0; } int getVal();private: int v;};int Test::get

2017-11-11 21:09:53 248

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除