c++(标准模板库STL)

STL是一种泛型编程(genericprogramming) STL提供了一组表示容器、迭代器、函数对象和算法的模板。 面向对象编程关注的是编程的数据方面,而泛型编程关注的是算法。 他们之间的共同点是抽象和创建可重用代码,但是他们的理念截然不同。 1、容器(container) 容器类是一...

2019-05-07 22:07:32

阅读数 77

评论数 3

c++(string类型)

c++对于字符串的处理提供了两种方法: 按照c中的字符数组处理。 按照string类型的对象处理。 string类是一种抽象数据类型(ADT),不是内嵌的、原子数据类型;和int、float、double等不同。 与字符数组相比,使用string类型更加简单、直观,可以像处理...

2019-05-05 22:04:47

阅读数 77

评论数 0

c++(类模板的继承)

根据上一篇博客中举的数组的例子,这篇博客就对其进行继承,再继承一个模板类出来。 下面程序中的searcharray模板就继承了之前的freearray模板类,然后在他的基础上实现对特定数组元素的查找操作: //此模板继承自freearray template <class T&...

2019-05-03 22:05:53

阅读数 92

评论数 0

c++(模板)

一、函数模板 函数模板属于类属,使用模板可以实现用一个函数体就可以处理不同的数据类型。 函数模板并不是一个真正意义上的函数,它仅仅是对函数结构外观的声明,本身并不占用内存,只有当编译器遇到模板函数的调用时,才会在内存中创建一个函数实例。 函数模板有点类似于重载,但是比重载更加方便。 c++...

2019-05-02 23:42:38

阅读数 156

评论数 0

c++(异常)

为了保证程序具有一定的容错能力,在出现意外的情况下不至于出现灾难性的后果,因此在程序中最好要考虑各种意外,并给出处理方法。 异常就是程序中的突发性事件。 设计异常的基本思想:让一个函数在出现了自己无法处理的错误时,抛出(throw)一个异常,然后它的调用者能够处理这些问题。 C++之父Bj...

2019-05-01 22:51:03

阅读数 84

评论数 0

c++(基类指针、多重继承与多继承)

一、基类指针 一般的,如果定义一个指向基类类型的指针,那么这种类型的指针具有如下特性: 指向基类对象的指针可以指向其子类对象。 如果子类覆盖了其基类中的函数成员,但通过基类指针所访问的成员仍然是基类的成员,而不是子类的成员。 比如基类BaseClass拥有函数F,其子类ChildClass中...

2019-04-30 19:14:39

阅读数 93

评论数 0

c++(虚函数、纯虚函数和抽象类)

目录 一、虚函数 1.1问题引入 1.2虚函数 二、纯虚函数 三、抽象类 1.1 注意: 1.2程序举例 一、虚函数 1.1问题引入 c++在默认情况下,对函数成员的调用实施的是静态连编(staticbinding),也叫静态绑定。 此时,如果子类中的函数F覆盖了基类的函...

2019-04-29 20:23:03

阅读数 88

评论数 0

c++(继承——二)

一、子类与基类构造函数的关系 如果子类和基类都有构造函数和析构函数, 那么当实例化子类的对象的时候,先调用基类的构造,然后调用子类的构造; 当程序结束时,顺序相反,先调用子类的析构函数,再调用基类的析构函数。 当基类的构造函数是默认(缺省)的时候,他们的调用是自动完成的,不需要在...

2019-04-28 15:06:58

阅读数 22

评论数 0

c++(继承)

c++允许在当前类的基础上构造新类,新类就继承了当前类的所有数据成员和函数成员,构造和析构函数除外。 已有类叫做:父类、基类;新产生的类叫做子类、派生类。 继承语法: class Child:public Father { ... } 上面这句话就是Child类继承了Father...

2019-04-27 21:46:40

阅读数 25

评论数 0

c++(对象组合)

在C语言中结构体支持嵌套,同样,c++的类也支持嵌套。也就是让某个类的对象作为另一个类的数据成员出现,这就是对象组合。 下面的例子是让IntArray类的对象作为Customer类的共有数据成员存在。 在这里,IntArray类其实就充当了我们自己定义的一个抽象数据类型,通过各种运算符重载函数...

2019-04-26 16:06:43

阅读数 87

评论数 0

c++(重载[]运算符)

c++支持重载[]符,这样就可以像操作普通数组一样操作对象数组。 下面创建一个intarray数组类,实现对数据下标的越界检查。 class IntArray { private: int *aptr; int arraySize; void memError(); ...

2019-04-25 17:50:32

阅读数 47

评论数 0

c++(关系运算符、流操作符与类型转换运算符重载)

1、重载关系运算符 与双目运算符的重载实现方式相似,唯一的区别是关系运算符重载函数的返回值是一个布尔值(true或者false) 下面是大于号(>)的重载函数: //重载关系运算符> //就是对两个成员变量进行一一对比 bool oper...

2019-04-24 19:10:57

阅读数 74

评论数 0

c++(重载单目运算符++)

因为单目运算符仅作用于当前对象,因此,当将这些运算符重载为函数成员时,就不再需要参数。 1、重载前置运算符(++obj) 在feetinches类中添加如下运算符重载函数成员: //重载前置++运算符 FeetInches operator++() { ...

2019-04-23 12:53:58

阅读数 94

评论数 2

c++(重载双目运算符)

重载加法运算符,实现对象的直接加法运算。例如,下面这个feetinches类: class FeetInches { private: int feet; int inches; //对feet和inches的值进行调整 void simplify(); pu...

2019-04-18 22:38:55

阅读数 105

评论数 1

c++(运算符重载与this指针)

1、重载赋值运算符 实现将对象A按位赋值给对象B。 例如定义一个person类的赋值运算符重载函数: class Person { private: int age; char *name; public: //省略。。。。 //重载赋值运...

2019-04-17 22:27:16

阅读数 168

评论数 0

c++(对象赋值与拷贝构造函数)

对象赋值 同一个类的对象之间可以相互赋值,默认情况下,进行的是对象成员之间的复制,也称为【按位复制】或【浅复制】。 当类的数据成员中没有指针类型的变量时,直接对两个对象进行赋值没有问题。 但是一旦类的数据成员含有指针变量,那么直接对这两个对象进行赋值操作之后,这两个对象的...

2019-04-16 21:45:13

阅读数 61

评论数 0

c++(友元函数)

友元函数要点 友元函数不是类的成员函数,但是仍可以访问该类的私有成员。友元函数可以是一个外部函数,也可以是另一个类的成员函数。 当类A中的某个函数成员需要访问类B中的私有成员的时候,首先需要在类A的头文件中进行对类B的超前使用说明,这是必不可少的。其次需要在类B中将A的函数声明为友...

2019-04-15 22:57:13

阅读数 487

评论数 0

c++(静态数据成员和静态函数成员)

1、静态数据成员 用static关键字修饰,在类中声明之后还需要在类外进行定义。 //头文件 class CharRange { private: static int temp; //类中声明 } //源文件 #include <iostream>...

2019-04-14 21:20:23

阅读数 128

评论数 0

c++(数组的排序与查询操作)

1、该数组类的定义和前一篇文章中基本一样,只是增加了几个成员函数,实现对数组的一些特定的操作。 #ifndef INTARRAY_H_INCLUDED #define INTARRAY_H_INCLUDED //创建一个数组类,实现下标的越界检查。 class IntArray { priv...

2019-04-14 10:12:54

阅读数 25

评论数 0

c++(抽象数组,实现对下标的越界检查)

1、首先在头文件中定义一个抽象数组类 #ifndef INTARRAY_H_INCLUDED #define INTARRAY_H_INCLUDED //创建一个数组类,实现下标的越界检查。 class IntArray { private: int list[20]; //...

2019-04-12 22:17:57

阅读数 42

评论数 0

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