自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丁香枝上,豆蔻梢头

提出问题,解决问题,是我前进的动力

  • 博客(12)
  • 问答 (2)
  • 收藏
  • 关注

原创 C++多态(上)——虚函数、虚表

OOP的核心思想是多态性(polymorphism)。其含义是“多种形态”。我们把具有继承关系的多个类型称为多态类型。引用或指针的静态类型和动态类型不同这一事实正是C++语言支持多态性的根本所在。 多态性:当用于面向对象编程的范畴时,多态性的含义是指程序能通过引用或指针的动态类型来获取类型特定行为的能力。多态性在C++中是通过虚函数来实现的。首先我们先来强调几组概念: 静态多态和动态多态、静

2017-04-18 15:42:31 1225 1

原创 C++继承详解三 ----菱形继承、虚继承

今天呢,我们来讲讲菱形继承与虚继承。这两者的讲解是分不开的,要想深入了解菱形继承,你是绕不开虚函数这一点的。它俩有着什么关系呢?值得我们来剖析。 菱形继承也叫钻石继承,它是多继承的一种特殊实例吧,它的基本架构如下图: 在我们的设想中,D所对应的对象模型应该如下图所示: 下面我们来用一段代码验证一下: class A{public: A() { cout

2017-04-17 23:01:25 1036

原创 智能指针(下)-----boost库智能指针,定制删除器、循环引用

上一篇我们已经详细讲解了智能指针的基础性知识和auto_ptr的模拟实现。 今天呢我们来讲解boost库的发展。 在C++11标准出来之前,C++98标准中都一直只有一个智能指针auto_ptr,我们知道,这是一个失败的设计。它的本质是管理权的转移,这有许多问题。而这时就有一群人开始扩展C++标准库的关于智能指针的部分,他们组成了boost社区,他们负责boost库的开发和维护。其目的是为C++

2017-04-15 16:54:48 570

原创 智能指针(上)-----动态管理内存问题,auto_ptr的模拟实现

今天我们来详解C++中一个重要的知识点——智能指针。文章主要以下面几点来展开:智能指针定义及动态内存的管理智能指针作用auto_ptr的模拟实现智能指针定义 智能指针简单理解就是智能的指针,它可以智能/自动化的管理指针所指向的动态内存的释放。 智能指针和普通指针的区别在于智能指针实际上是对普通指针加了一层封装机制(利用了RAII技术),这样做的目的是为了使得智能指针可以方便的管理一个对象

2017-04-13 09:22:29 932

原创 模板2——顺序表的实现(现代写法的进一步解析,更深层次的深浅拷贝)

之前我们讲解了关于模板方面的知识,今天我们用模板来实现顺序表。 这次顺序表的实现和之前没有太大区别,但还是有几点需要我们来重点进行详解。 我们先来看下面这段代码#include<iostream>#include<string>#include<assert.h>using namespace std;template<typename T>class SeqList {pub

2017-04-11 11:45:20 484

原创 STL list的简单实现及list迭代器失效问题

上一篇我针对不同的数据结构来演示了迭代器的使用,今天我们主要来看看STL list的使用及他的模拟实现。 首先我们来实现list节点的结构体。看下面代码:templateT>struct __ListNode{ T _data; __ListNode* _next; __ListNode* _prev; __ListNode(const T& x)

2017-04-27 18:23:04 1419 2

原创 迭代器的使用

这一篇以至下一篇文章我来讲解关于迭代器。今天呢,我们重点了解迭代器以及了解掌握迭代器的使用。 迭代器(iterator)有时又称游标(cursor),是程序设计的软件设计模式,他是专门为访问容器而设计的一种数据结构,他实际是对访问容器这一操作进行了封装。也有一种说法是迭代器是指针的封装。和智能指针有点相似。 迭代器是一种对象,他用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容

2017-04-24 22:15:06 569

原创 C++异常

今天我们来说说C++中有关异常的处理方法,异常的常见用法及特性。 一,有关错误的处理方法返回错误码;终止程序;返回合法值,让程序处于某种非法的状态;调用一个预先设置好出现错误时调用的函数——回调函数;异常处理; 当一个函数发现自己无法解决的错误时抛出异常,让函数的调用者直接或间接的解决这个问题。二,异常的抛出和捕获异常是通过抛出对象来引发的,该对象的类型决定应该激活哪

2017-04-22 16:09:15 362

转载 C++继承详解二——默认成员函数

在这一篇文章开始之前,我先解决一个问题。   在上一篇C++继承详解之一——初探继承中,我提到了在派生类中可以定义一个与基类成员函数同名的函数,这样派生类中的函数就会覆盖掉基类的成员函数。   在谭浩强的C++程序设计这本书第十一章,351页最下面有这么一段话: 可在派生类中声明一个与基类成员同名的成员函数,则派生类中的新函数会覆盖基类的同名成员,但应注意:如果是成员函数,不仅应是函数名相同

2017-04-18 09:37:32 1858

原创 C++模板详解

在平时写代码时,我们总会遇到这种问题:实现一个很简单的功能,但是由于传参过程中不同于形参类型的实参类型会使得你不得写多个功能相似的函数分别去实现他们,这就会造成许多问题,比如代码冗余,函数名太多造成名字空间的污染。这就需要其他方法来解决这种问题。之前在C语言学习中,我们学到了宏这一概念,宏可以一定程度上解决这个问题。但是宏也有它的缺点: 宏替换 宏是在预编译时展开的; 宏只是简单地文本替换;

2017-04-09 19:21:07 492 1

原创 Linux进程管理之PCB

首先呢,我们来认知一下程序和进程。程序是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。而进程是操作系统对一个正在运行着的程序的一种抽象。 我呢是下面这样来理解程序与进程的区别的,有不全面的地方多多指教。 PCB是什么呢?下面我们就来详细聊聊这PCB。 每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息。其作用是使一个在多道程序环境下不能独立运行的程序成为一个

2017-04-09 15:06:04 2441

原创 Linux下简单进度条的实现

首先呢,我给出代码和进度条效果图,后面来进行详解。 如上图所示,这进度条实现的也着实简单(略显尴尬),但进度条原理本质就是如此,只不过多了些修饰,下面来进行详解。 unistd.h是C、C++程序设计语言中提供对POSIX(可移植操作系统接口)操作系统API的访问功能的头文件的名称。 usleep函数是延时函数,单位为微秒。下面看个有趣的现象 看上面这段简单的代码,他实现的效果是先延迟三秒,

2017-04-09 11:51:12 646

空空如也

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

TA关注的人

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