摘要: 虚成员就是其声明中在返回类型前面带有关键字“virtual”的类成员函数。 C++中基类通过将成员函数指定为虚函数来指出希望派生类重定义的那些函数。 除了构造函数外,任意非static函数都可以为虚成员。 阅读全文
posted @ 2016-07-20 09:24 秋水小战士 阅读(155) 评论(0) 推荐(0) 编辑
摘要: C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。 所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自 阅读全文
posted @ 2016-07-11 09:01 秋水小战士 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 复制控制:分为复制构造函数、赋值操作符和析构函数。编译器自动实现这么操作,但类也可以定义自己的版本。 复制构造函数:只有单个形参,且形参是对本类类型对象的引用(常用const修饰)的构造函数。 赋值操作符:接受单个形参,且该形参是同一类类型的对象。由操作数一般作为const引用传递。 一般而言,需要 阅读全文
posted @ 2016-07-07 17:11 秋水小战士 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 变量: |全局变量(外部变量):在函数外部定义,以及被本程序所有对象或函数引用。 |局部变量(内部变量):由某个函数或对象创建,只能被内部引用,而无法被其他对象或函数引用。 全局静态变量:在全局变量前,加上关键词static,该变量就被定义成为一个静态全局变量。 特点: |该变量在全局数据区分配内存 阅读全文
posted @ 2016-07-07 09:41 秋水小战士 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 定义:extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中。编译器会到其他模块中寻找其定义。 extern int f(); extern int i; extern关键字 作为声明可以出现很多次;但是定义只能出现一次。 extern int a;//声明一个全局变量a int a 阅读全文
posted @ 2016-07-07 09:09 秋水小战士 阅读(115) 评论(0) 推荐(0) 编辑
摘要: A. 面向过程: 1. 静态全局变量:在全局变量前,加上关键词static,该变量就被定义成为一个静态全局变量。 1.1. 特点: |该变量在全局数据区分配内存; |未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量 阅读全文
posted @ 2016-07-06 17:20 秋水小战士 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 必须对任何const或引用类型成员以及没有默认构造函数的类类型的任何成员使用初始化式。 其他的可以用赋值操作来代替初始化。 阅读全文
posted @ 2016-07-05 15:41 秋水小战士 阅读(98) 评论(0) 推荐(0) 编辑
摘要: |输入迭代器 读,不能写;只支持自增运算 istream_iterator == != ++ * -> |输出迭代器 写,不能读;只支持自增运算 ostream_iterator ++ * |前向迭代器 读和写;只支持自增运算 == != ++ * -> |双向迭代器 读和写;支持自增和自减运算 m 阅读全文
posted @ 2016-06-30 17:12 秋水小战士 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 1.插入迭代器 |back_inserter:创建使用push_back实现末端插入的迭代器。 |front_inserter:使用push_front实现前端插入。(vector或其他没有push_front运算的容器上不能使用) |inserter:使用insert实现指定位置插入操作,除了所关 阅读全文
posted @ 2016-06-30 17:09 秋水小战士 阅读(103) 评论(0) 推荐(0) 编辑
摘要: sort函数:将容器中元素按字典排列; unique函数:删除相邻的重复元素,然后重新排列输入范围内的元素,并且返回一个迭代器,表示无重复的值范围的结束; 谓词:做某些检测的函数,返回用于条件判断的类型,指出条件是否成立; stable_sort函数:保留相等元素的原始相对位置,本程序里,对于相同长 阅读全文
posted @ 2016-06-30 15:12 秋水小战士 阅读(348) 评论(0) 推荐(0) 编辑
摘要: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。resize是改变容器的大小,且在创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用op 阅读全文
posted @ 2016-06-30 14:32 秋水小战士 阅读(577) 评论(0) 推荐(0) 编辑
摘要: replace算法对输入序列作读写操作,将序列中特定的值替换为新的值。 replace_copy对输入序列的元素进行处理,但不修改原来的元素,而是创建一个新序列存储元素的处理结果。 back_inserter函数对在试图通过这个迭代器给元素赋值的时候,赋值元算将调用push_back在容器中添加一个 阅读全文
posted @ 2016-06-30 14:22 秋水小战士 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 这个算法只会输入范围内已存在的元素进行写入操作。 阅读全文
posted @ 2016-06-30 14:13 秋水小战士 阅读(163) 评论(0) 推荐(0) 编辑
摘要: std::out_of_range #include <stdexcept> istringstream #include <sstream> count #include <algorithm> back_inserter #include <iterator> 阅读全文
posted @ 2016-06-30 10:41 秋水小战士 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 容器分两种:顺序容器和关联容器(所有的容器都是类模板) 顺序容器:顺序容器内的元素按其位置存储和访问 顺序容器:|vector类型:支持快速随机访问 |list类型:支持快速插入/删除 |deque类型:双段队列 顺序容器适配器:|stack:后进先出栈 |queue:先进先出队列 |priorit 阅读全文
posted @ 2016-06-30 10:34 秋水小战士 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 错误:variable `xxx' has initializer but incomplete type 原因:xxx对应的类型没有找到,只把xxx声明了但是没给出定义。编译器无从确认你调用的构造函数是什么,在哪儿一般是没有包含定义xxx的头文件。 阅读全文
posted @ 2016-06-29 14:36 秋水小战士 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 通过判断输入是否等于EOF,可以结束输入。 EOF 是个宏,其意思是:End Of File,文件尾标志。 从数值上来看,就是整数-1。 在C语言的头文件中对其进行了宏定义: libio.h: # define EOF (-1) 当读文件操作时,遇到文件结束位置或读数据出错均会返回 EOF。 (C语 阅读全文
posted @ 2016-06-29 11:03 秋水小战士 阅读(1443) 评论(0) 推荐(0) 编辑
摘要: 指向曾经存在的对象,但该对象已经不再存在了,此类指针称为悬垂指针。结果未定义,往往导致程序错误,而且难以检测。 #include<iostream> #include <windows.h> using namespace std; int *p=NULL; void fun() { int i=1 阅读全文
posted @ 2016-06-27 15:26 秋水小战士 阅读(228) 评论(0) 推荐(0) 编辑