学会思考
刻意练习
03 2017 档案
C++程序设计方法3:禁止自动类型转换
摘要:禁止自动类型转换 explicit 禁止自动类型转换--delete 使用=delete修饰的成员函数,不允许被调用 阅读全文
posted @ 2017-03-30 00:12 Worty 阅读(2215) 评论(0) 推荐(0)
C++程序设计方法3:自动类型转换
摘要:方法1:在源类中定义目标类型转换运算符 方法2:在目标类中定义源类对象作参数的构造函数 拷贝:同样类的对象拷贝给同样类的新对象; 注意:两种自定义类型转换的方法不能同时使用; 阅读全文
posted @ 2017-03-30 00:05 Worty 阅读(297) 评论(0) 推荐(0)
C++程序设计方法3:虚函数
摘要:向上映射与向下映射 派生类对象转换成基类对象,称为向上映射。 而基类对象转换成派生类对象,称为向下映射; 向上映射可由编译器自动完成,是一种隐式的自动类型转化; 凡是接受基类对象的地方(如函数参数)都可以使用派生类对象,编译器会自动将派生类 转化为基类对象以便使用; 虚函数 对于被派生类重写的成员函 阅读全文
posted @ 2017-03-29 23:43 Worty 阅读(381) 评论(0) 推荐(0)
C++程序设计方法3:函数重写
摘要:重写与重载的区别: 函数重载要求函数名字必须一样,函数的参数要求不一样; 而函数的重写则是函数名字和函数的参数必须都一样; 基类已定义的成员函数,在派生类中可以重新定义它,这被称为函数重写(override) 重写发生时,基类中该成员函数的其他重载函数都将被屏蔽,不能提供给派生类对象使用; 可以在派 阅读全文
posted @ 2017-03-29 22:57 Worty 阅读(3666) 评论(0) 推荐(0)
C++程序设计方法3:派生类对象的构造和析构过程
摘要:基类中的数据成员,通过继承成为派生类对象的一部分,需要在构造派生类对象的过程中调用基类构造函数来正确初始化; 若没有显示调用,则编译器会自动生成一个对基类的默认构造函数的调用。 若想要显示调用,则只能在派生类构造函数的初始化成员列表中进行,既可以调用基类中不带参数的默认构造函数,也可以调用合适的带参 阅读全文
posted @ 2017-03-29 22:17 Worty 阅读(1082) 评论(0) 推荐(0)
C++程序设计方法3:default修饰符
摘要:编译器自动生成的成员函数 如果以下成员函数用户都没有为类实现,则编译器会自动为类生成他们的缺省的实现 默认构造函数,空函数,什么也不做 析构函数,空函数,什么也不做; 拷贝构造函数-按bit位复制对象所占内存的内容 如果对象中涉及到指针的话,需要自己定义拷贝构造函数,否则可以默认; 移动构造函数-与 阅读全文
posted @ 2017-03-29 00:06 Worty 阅读(617) 评论(0) 推荐(0)
C++程序设计方法3:移动构造函数
摘要:移动拷贝构造函数 语法: ClassName(ClassName&&); 目的: 用来偷“临时变量”中的资源(比如内存) 临时变量被编译器设置为常量形式,使用拷贝构造函数无法将资源偷出来(“偷”是对原来对象的一种改动,违反常量的限制)基于“右值引用“定义的移动构造函数支持接受临时变量,能偷出临时变量 阅读全文
posted @ 2017-03-28 22:55 Worty 阅读(860) 评论(0) 推荐(0)
Qt控制台例子
摘要:功能:实现通过命令行方式保存文件 阅读全文
posted @ 2017-03-28 17:18 Worty 阅读(450) 评论(0) 推荐(0)
C++程序设计方法3:对象组合
摘要:对象组合 包含其他类的对象 可以在类中使用其他类来定义数据成员,通常称为“子对象”;这种包含与被包含的对象间的关系称为“组合”,组合关系可以嵌套。 子对象构造时若需要参数,则应当在当前类的构造函数的初始化列表中进行;若使用默认构造函数来构造子对象,则不用作任何的处理; 对象的构造与析构次序 先完成子 阅读全文
posted @ 2017-03-27 22:59 Worty 阅读(452) 评论(0) 推荐(0)
C++程序设计方法3:类中的静态成员
摘要:在类型前面加static修饰的数据成员,是隶属于类的,成为类的静态数据成员,也称为“类的变量” 静态数据成员被该类的所有对象共享(即所有对象中的这个数据域实际上处于同一个内存位置) 静态数据要在实现文件中赋初值,格式为: Type ClassName::static_var = Value; 返回值 阅读全文
posted @ 2017-03-27 22:48 Worty 阅读(355) 评论(0) 推荐(0)
C++程序设计方法3:数组下标运算符重载
摘要:数组下标运算符重载 函数声明形式 返回类型operator[](参数); 如果返回类型是引用,则数组运算符调用可以出现在等式的左边,接受赋值,即: Obj[index] = value; 如果返回类型不是引用,则只能出现在等号的右边 Var = Obj[index]; 阅读全文
posted @ 2017-03-27 22:17 Worty 阅读(2815) 评论(0) 推荐(0)
C++程序设计方法2:函数运算符重载
摘要:函数运算符()重载 函数运算符()也能重载,它使得对象看上去像是一个函数名 ReturnType operator() (Parameters) { ...... } ClassName Obj; Obj(real_parameters); //->obj.operator() (real_para 阅读全文
posted @ 2017-03-27 21:57 Worty 阅读(226) 评论(0) 推荐(0)
C++程序设计方法2:基本语法2
摘要:对象赋值-赋值运算符重载 赋值运算符函数是在类中定义的特殊的成员函数 典型的实现方式: 流运算符重载函数的声明 istream& operator>>(istream& in, Test& dst); ostream& operator<<(ostream& out, const Test& src 阅读全文
posted @ 2017-03-26 20:57 Worty 阅读(229) 评论(0) 推荐(0)
C++程序设计方法2:基本语法
摘要:初始化列表 int a[] = {1,2,3}; int a[]{1,2,3} 以上两个式子等价 int a = 3+5; int a = {3+5}; int a(3+5); int a{3+5}; 以上式子等价 int *i = new int(10); double *d = new doub 阅读全文
posted @ 2017-03-26 20:22 Worty 阅读(349) 评论(0) 推荐(0)
C++程序设计方法1:分离代码
摘要:使用头文件,分离声明与定义 防止重复包含: #ifndef FUNC_H #define FUNC_H .... #endif main函数的命令行参数: 变量定义: auto变量 由编译器根据上下文自动确定变量的类型,如:auto i = 3;//i是int型变量 auto f = 4.0f;// 阅读全文
posted @ 2017-03-26 00:37 Worty 阅读(327) 评论(0) 推荐(0)
C++学习笔记56:异常处理
摘要:异常处理 异常处理的语法 抛掷异常的程序段 throw表达式; 捕获并处理异常的程序段 try 复合语句 catch(异常声明) 复合语句 catch(异常声明) 复合语句 注意:如果匹配的处理器没有找到,则库函数terminate将被自动调用,其缺省默认自动调用abort终止程序的执行; 处理除零 阅读全文
posted @ 2017-03-25 15:51 Worty 阅读(231) 评论(0) 推荐(0)
C++学习笔记55:流类库与输入输出
摘要:I/O流的概念及流类库的结构 程序与外界环境的信息交换 当程序与外界环境进行信息交换时,存在着两个对象:程序中的对象,文件对象。 流是一种抽象,负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动; 流对象与文件操作 程序建立一个流对象 指定这个流对象与某个文件对象建立连接 程序操作流对象 阅读全文
posted @ 2017-03-18 22:15 Worty 阅读(558) 评论(0) 推荐(0)
C++学习笔记54:关联容器,函数对象
摘要:关联容器的特点 1.每个关联容器都有一个键(key) 2.可以根据键高效查找元素 集合set 集合用来存储一组无重复的元素,由于集合的元素本身是有序的,可以高效地查找元素,也可以方便地指定大小范围的元素在容器中所处的区间。 STL算法的特点 STL算法本身是一种函数模板 通过迭代器获得输入数据 通过 阅读全文
posted @ 2017-03-18 15:33 Worty 阅读(161) 评论(0) 推荐(0)
C++学习笔记53:泛型程序设计与C++标准模板库
摘要:泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++模板为泛型编程程序设计奠定了关键的基础 模型:符合一个概念的数据类型称为该概念的模型,例如:int型是Comparable概念的模型; 静态数据类型不是Assignable概念的模型(无法用“ 阅读全文
posted @ 2017-03-18 11:32 Worty 阅读(294) 评论(0) 推荐(0)
C++学习笔记52:查找
摘要://函数查找 template int seqSearch(const T list[], int n, const T &key) { for (int i = 0; i int binSearch(const T list[], int n, const T &key) { int low = 0; int high = n - 1; while (low... 阅读全文
posted @ 2017-03-17 21:43 Worty 阅读(240) 评论(0) 推荐(0)
C++学习笔记51:排序
摘要://直接插入排序函数模板 template void insertionSort(T a[], int n) { int i, ; T temp; for (int i = 1; i 0 && temp void mySwap(T &x, T &y) { T temp = x; x = y; y = temp; } template v... 阅读全文
posted @ 2017-03-16 00:08 Worty 阅读(218) 评论(0) 推荐(0)
C++学习笔记50:队列类模板
摘要:队列是只能向一端添加元素,从另一端删除元素的线性群体 循环队列 在想象中将数组弯曲成环形,元素出队时,后继元素不移动,每当队尾达到数组最后一个元素时,便再回到数组开头。 队列类模板 阅读全文
posted @ 2017-03-15 21:43 Worty 阅读(659) 评论(0) 推荐(0)
C++学习笔记49:栈
摘要:栈是一种只能从一端访问的线性数据结构,栈是一种后进先出的数据结构 栈的引用:判断是否存在不匹配的() 阅读全文
posted @ 2017-03-15 21:42 Worty 阅读(256) 评论(0) 推荐(0)
C++学习笔记48:链表的基本操作
摘要://链表的基本操作 //生成链表,插入结点,查找结点,删除结点,遍历链表,清空链表 //链表类模板 //LinkedList.h #ifndef LINKEDLIST_H #define LINKEDLIST_H #include "Node.h" template class LinkedList { private: Node *front, *rear;//表头和表尾指针 ... 阅读全文
posted @ 2017-03-15 21:13 Worty 阅读(610) 评论(0) 推荐(0)
C++学习笔记47:链表的概念与结点类模板
摘要:学堂在线学习笔记 链表的概念与结点类模板 顺序访问的线性群体--链表类 链表是一种动态数据结构,可以用来表示顺序访问的线性群体; 链表是由系列结点组成,结点可以在运行时动态生成; 每一个结点包括数据域和指向链表中下一个结点的指针(即下一个结点的地址)。如链表中每个结点中只有一个指向后继结点的指针,则 阅读全文
posted @ 2017-03-14 23:06 Worty 阅读(2754) 评论(0) 推荐(0)
C++学习笔记46:模板与群体数据
摘要:函数模板 创建一个通用功能的函数,支持多种不同的形参;简化重载函数的函数体设计; 语法形式 template <模板参数表> 函数定义:模板参数表的内容:类型参数:class(或typename)标识符 常量参数:类型说明符,标识符 模板参数:template<参数表>class 标识符 例子: t 阅读全文
posted @ 2017-03-13 23:29 Worty 阅读(465) 评论(0) 推荐(0)
C++学习笔记45:多态性
摘要:运算符重载 运算符是针对新类型数据的实际需要,对原有运算符进行适当的改造 1.比如使复数类的对象可以使用+运算符实现加法; 2.比如使时钟类的对象可以用++运算符实现时间增加1秒; 注意:可以重载为类的非静态成员函数、非成员函数 重载为类成员的运算符函数定义形式:函数类型 operator 运算符( 阅读全文
posted @ 2017-03-12 22:14 Worty 阅读(186) 评论(0) 推荐(0)
C++学习笔记44:继承与派生
摘要:类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类;) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类;) 组合:常用描述has a.. 继承:常用描述is a .. 如果既可以用组合又可以用派生解决,那首选组合方式; 继承与派生的目的 继承的目的:实现设计和代 阅读全文
posted @ 2017-03-11 21:04 Worty 阅读(361) 评论(0) 推荐(0)
C++学习笔记43:STL
摘要:STL简介(standard Template Library) STL的基本组件:容器(container),迭代器(iterator),函数对象(function object) 算法(algorithms) Iterators是算法和容器的桥梁 将迭代器作为算法的参数,通过迭代器来访问容器而不 阅读全文
posted @ 2017-03-11 18:07 Worty 阅读(261) 评论(0) 推荐(0)