摘要: 一、多态的主要特点 1、继承体系下。继承:是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性 和行为,并能扩展新的能力,已有类被称为父类/基类,新增加的类被称作子类/派生类。 2、子类对父类的虚函数进行重写。 3、虚表。 在面向对象语言中,接口的多种不同现方式即阅读全文
posted @ 2017-05-12 08:59 滴巴戈 阅读(95) 评论(0) 编辑
摘要: 1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点。由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不了了,如此我们再引入一个智能指针,专门用于处理复制,参数传递的情况,这便是如下的boost::sha阅读全文
posted @ 2017-05-11 21:02 滴巴戈 阅读(141) 评论(0) 编辑
摘要: 1. 引入 C++语言中的动态内存分配没有自动回收机制,动态开辟的空间需要用户自己来维护,在出函数作用域或者程序正常退出前必须释放掉。 即程序员每次 new 出来的内存都要手动 delete,否则会造成内存泄露, 有时我们已经非常谨慎了 , 然防不胜防:流程太复杂,程序员忘记 delete;异常导致阅读全文
posted @ 2017-05-10 22:24 滴巴戈 阅读(79) 评论(0) 编辑
摘要: 只有注册用户登录后才能阅读该文。阅读全文
posted @ 2017-05-09 12:01 滴巴戈 阅读(52) 评论(0) 编辑
摘要: 前面介绍的模板有关知识大部分都是用顺序表来举例的,现在我们就专门用模板来实现顺序表,其中的很多操作都和之前没有多大区别,只是有几个比较重要的知识点需要做专门的详解。 问题一实质同下面的问题3,后面再做详细分析。 这里很有必要详解实现上面赋值运算符重载的现代写法的实现原理 :首先看上面代码(list1阅读全文
posted @ 2017-05-02 22:40 滴巴戈 阅读(127) 评论(0) 编辑
摘要: 我们以顺序表为例来说明,普通顺序表的定义如下: 模板类也是模板, 必须以 关键字templ ate开头, 后接模板形参表。 模板类一般格式如下:template<class 形参名 1, class 形参名 2, . . . class 形参名 n>class 类名{ . . . } ; 【 模板类阅读全文
posted @ 2017-04-30 10:22 滴巴戈 阅读(90) 评论(-1) 编辑
摘要: 1、引入 如何编写一个通用加法函数?第一个方法是使用函数重载, 针对每个所需相同行为的不同类型重新实现这个函数。C++的这种编程机制给编程者极大的方便,不需要为功能相似、参数不同的函数选用不同的函数名,也增强了程序的可读性。简单示例: 【 缺点】1、 只要有新类型出现, 就要重新添加对应函数。2、 阅读全文
posted @ 2017-04-29 19:09 滴巴戈 阅读(138) 评论(0) 编辑
摘要: 1、什么是栈帧? 栈帧也叫过程活动记录,是编译器用来实现函数调用过程的一种数据结构。C语言中,每个栈帧对应着一个未运行完的函数。从逻辑上讲,栈帧就是一个函数执行的环境:函数调用框架、函数参数、函数的局部变量、函数执行完后返回到哪里等等。栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的阅读全文
posted @ 2017-04-27 20:23 滴巴戈 阅读(322) 评论(0) 编辑
摘要: main函数和启动例程 当内核使用一个exec函数执行C程序时,在调用main函数之前先调用一个特殊的启动例程,可执行程序将此例程指定为程序的起始地址。启动例程从内核获取命令行参数和环境变量,然后为调用main函数做好准备。我们常用gcc main.c -o main命令编译一个程序,其实也可以分三阅读全文
posted @ 2017-04-26 21:47 滴巴戈 阅读(176) 评论(0) 编辑
摘要: 进程优先级 进程cpu资源分配就是指进程的优先权(priority)。优先权高的进程有优先执行权利。 权限与优先级 权限(privilege)是指在多用户计算机系统的管理中,某个特定的用户具有特定的系统资源使用权力,像是文件夹,特定系统指令的使用或存储量的限制。权限是有或没有的问题,而优先级则是在已阅读全文
posted @ 2017-04-25 21:57 滴巴戈 阅读(140) 评论(0) 编辑
摘要: 纯虚函数 纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。纯虚函数的存在是为了更方便使用多态特性。它的一般格式如下: class <类名> { virtual <类型><函数名>(<参数表>)阅读全文
posted @ 2017-04-19 17:29 滴巴戈 阅读(87) 评论(0) 编辑
摘要: 什么是多态 从字面上理解就是多种形态的意思。而多态一词最初源自希腊语,其含义便是“多种形式”,意思是是具有多种形式或形态的情形,在C++语言中多态有着更广泛的含义。在C++ primer一书中把具有继承关系的多个类型称为多态类型,因为我们能使用这些类型的“多种形式”而无须在意它们的差异。百度百科上提阅读全文
posted @ 2017-04-19 11:25 滴巴戈 阅读(246) 评论(0) 编辑
摘要: 在上一篇文章中详细介绍了task_struct结构体内的常见成员,然后我们就来看一下具体内容。每个进程都把它的信息放在 task_struct 这个数据结构中,task_struct 包含了这些内容:标示符 : 描述本进程的唯一标示符,用来区别其他进程。状态 : 任务状态,退出代码,退出信号等。优先阅读全文
posted @ 2017-04-17 21:42 滴巴戈 阅读(142) 评论(0) 编辑
摘要: 单继承是一般的单一继承,一个子类只 有一个直接父类时称这个继承关系为单继承。这种关系比较简单是一对一的关系: 多继承是指 一个子类有两个或以上直接父类时称这个继承关系为多继承。这种继承方式使一个子类可以继承多个父类的特性。多继承可以看作是单继承的扩展。派生类具有多个基类,派生类与每个基类之间的关系仍阅读全文
posted @ 2017-04-16 21:52 滴巴戈 阅读(127) 评论(0) 编辑
摘要: STL源码初步接触 STL = Standard Template Library,直译过来是:标准模板库,是惠普实验室开发的一系列软件的统称。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集阅读全文
posted @ 2017-04-16 13:53 滴巴戈 阅读(159) 评论(0) 编辑
摘要: 进程概念介绍 进程是操作系统对运行程序的一种抽象。 • 一个正在执行的程序; • 一个正在计算机上执行的程序实例; • 能分配给处理器并由处理器执行的实体; • 一个具有普以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集。 内核观点:担当分配系统资源(CPU时间,内存)的实体。阅读全文
posted @ 2017-04-13 22:07 滴巴戈 阅读(302) 评论(0) 编辑
摘要: 作用域与重定义(同名隐藏) 一样的,先上代码 编译后,编译器会报错错误表明:编译器并没有将c.a()看做C类继承自A类的a()函数,而是报错没有给a函数参数,即不构成函数重载,如果给c.a(10)一个参数,编译通过。输出:C 那么我们不给C类中定义同名函数呢 编译通过,运行输出:A 以上两个例子,完阅读全文
posted @ 2017-04-11 12:46 滴巴戈 阅读(77) 评论(0) 编辑
摘要: 在继承关系里面, 在派生类中如果没有显示定义这六个成员 函数, 编译系统则会默认合成这六个默认的成员函数。 构造函数。 调用关系先看一段代码: 输出结果为: 代码中,我们利用派生类Derived,创建了一个对象d,根据输出结果看到,貌似创建对象d的过程是:先调用基类的构造函数,再调用子类的构造函数;阅读全文
posted @ 2017-04-09 21:58 滴巴戈 阅读(144) 评论(0) 编辑
摘要: 继承是使代码可以复用的重要手段,也是面向对象程序设计的核心思想之一。简单的说,继承是指一个对象直接使用另一对象的属性和方法。继承呈现了 面向对象程序设 计的层次结构, 体现了 由简单到复杂的认知过程。C++中的继承关系就好比现实生活中的父子关系,继承一笔财产比白手起家要容易得多,原始类称为基类,继承阅读全文
posted @ 2017-04-09 12:17 滴巴戈 阅读(163) 评论(0) 编辑
摘要: vim自带的帮助手册是英文的, 对平时编程的人来说没有多大阅读困难,在何况还有"星级译王"呢, 但是我猜和我一样连英语四级都愁的大有人,可偏偏就有一帮好心人人将其翻译成了中文, 可偏偏我又挡不住诱惑将它安装了, 唉.......又痛失一个学习英文的好机会, 下不为例。而我又是好心人,所以就分享给大家阅读全文
posted @ 2017-04-08 19:29 滴巴戈 阅读(80) 评论(0) 编辑
摘要: 一、二叉搜索树的定义及性质 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 1. 每个节点都有一个作为搜索依据的关键码( key) , 所有节点的阅读全文
posted @ 2017-06-18 21:29 滴巴戈 阅读(203) 评论(0) 编辑
摘要: 1. 文件描述符(重点) 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过阅读全文
posted @ 2017-06-16 13:34 滴巴戈 阅读(212) 评论(0) 编辑
摘要: 1. 进程标识符 在前面进程描述一章节里已经介绍过进程的两个基本标识符pid和ppid,现在将详细介绍进程的其他标识符。 每个进程都有非负的整形表示唯一的进程ID。一个进程终止后,其进程ID就可以再次使用了。如下是一个典型进程的ID及其类型和功能。 进程名:swapper (交换进程),进程ID:0阅读全文
posted @ 2017-06-16 07:45 滴巴戈 阅读(49) 评论(0) 编辑
摘要: 我们知道当一个父进程创建一个子进程时,会调用wait()和waitpid()函数清理僵⼫进程,⽗进程可以阻塞等待⼦进程结束,也可以⾮阻塞地查询是否有⼦进程结束等待清理(也就是轮询的⽅式)。采⽤第⼀种⽅式,⽗进程阻塞了就不 能处理⾃⼰的⼯作了;采⽤第⼆种⽅式,⽗进程在处理⾃⼰的⼯作的同时还要记得时不时阅读全文
posted @ 2017-06-15 20:07 滴巴戈 阅读(208) 评论(0) 编辑
摘要: 一、可重入函数 1.可重入函数介绍 main函数调⽤insert函数向⼀个链表head中插⼊节点node1,插⼊操作分为两步,刚做完第⼀步的 时候,因为硬件中断使进程切换到内核,再次回⽤户态之前检查到有信号待处理,于是切换 到sighandler函数,sighandler也调⽤insert函数向同⼀阅读全文
posted @ 2017-06-15 13:09 滴巴戈 阅读(328) 评论(0) 编辑
摘要: 一、死锁的概念: 1、死锁的现象描述 在很多应用中,需要一个进程排他性的访问若干种资源而不是一种。例如,两个进程准备分别将扫描的文档记录到CD上。进程A请求使用扫描仪,并被授权使用。但进程B首先请求CD刻录机,也被授权使用。这时,A请求使用CD刻录机,但这个请求在B释放CD刻录机前会被拒绝。但是,进阅读全文
posted @ 2017-06-14 22:19 滴巴戈 阅读(113) 评论(0) 编辑
摘要: 一、信号的基本概念 1.引入 计算机中常见的信号:(1) ⽤户输⼊命令,在Shell下启动⼀个前台进程; (2)⽤户按下Ctrl-C/Ctrl-Z等,这个键盘输⼊产⽣⼀个硬件中断。如此类的组合键等被操作系统解释为信号(注意,Ctrl-C产⽣的信号只能发给前台进程。 ); (3)如果CPU当前正在执⾏阅读全文
posted @ 2017-06-14 14:59 滴巴戈 阅读(136) 评论(0) 编辑
摘要: 一、线程概念 1、引入 我们知道,进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,本篇我们将学习如何在一个进程的地址空间中执行多个线程。有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比如实现一个图形界面的下载软件, 一方面需要和用户交互,等待阅读全文
posted @ 2017-06-10 15:08 滴巴戈 阅读(203) 评论(0) 编辑
摘要: 1、迭代器(iterators)概念(1)迭代器是一种抽象的设计概念,其定义为:提供一种方法,使他能够按顺序遍历某个聚合体(容器)所包含的所有元素,但又不需要暴露该容器的内部表现方式。 (2)迭代器是一种行为类似智能指针的对象, 而指针最常见的行为就是内 容提领和成员 访问。 因此迭代器最重要的行为阅读全文
posted @ 2017-05-24 21:38 滴巴戈 阅读(173) 评论(0) 编辑
摘要: 1. 什么是斐波那契数? 这里我借用百度百科上的解释:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被阅读全文
posted @ 2017-05-13 20:16 滴巴戈 阅读(172) 评论(1) 编辑