自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

转载 抽象类和接口

目录 1. 什么是抽象类 2. C++中的抽象类与接口 1. 什么是抽象类在进行面向对象分析时,会发现一些抽象的概念,比如图形Shape,要想计算图形的面积,就必须先知道具体的图形类型,因为对概念上的“图形”求面积是没有意义的。在面向对象理论中,现实世界中的抽象概念可以用抽象类表示...

2019-09-28 13:19:00 105

转载 多态

目录 1. 多态的概念和意义 2. C++多态的实现原理 3. 构造析构与虚函数 4. C++对象模型分析 继承对象模型 多态对象模型 5. 用C实现面向对象,展现继承与多态本质 代码实现 ...

2019-09-28 13:11:00 123

转载 继承(二)

目录 1. 父子间的同名冲突 同名变量冲突 同名函数冲突 2. 同名冲突引发的问题 父子间的赋值兼容 函数重写 当函数重写遇上赋值兼容 3. 继承中的强制类型转换 ...

2019-09-28 08:26:00 105

转载 继承(一)

目录 1. 继承的概念和意义 类之间的关系 组合关系 继承关系 2. 继承中的访问级别 3. 不同的继承方式 4. 继承中的构造与析构 1. 继承的概念和意义类之间的关系在C++中,类之间...

2019-09-27 17:28:00 195

转载 类型转换函数

目录 1. 转换构造函数 2. explicit关键字 3. 类型转换函数 1. 转换构造函数类的构造函数可以定义不同类型的参数,当参数满足下列条件时,就可称其为转换构造函数。函数仅有一个参数参数是基本类型或者其他类类型其中,有一种特殊情形,也可构成转换构造函数...

2019-09-25 19:39:00 522

转载 操作符重载(三)

目录 1. 结论 2. 逻辑操作符重载 3. 逗号操作符重载 1. 结论前面两次笔记都是C++中可以重载且无副作用的操作符,本次笔记比较特殊,主要列出两个C++语法允许重载、但在工程中不应该(不允许)重载的操作符:逻辑操作符 && 和 ||逗号操作符...

2019-09-24 21:05:00 59

转载 操作符重载(二)

目录 1. 数组操作符重载 数组操作符重载 数组类IntArray改进 2. 函数操作符重载(函数对象) 3. 指针操作符重载与智能指针 指针操作符重载 智能指针 4. 前置、后置操作符重...

2019-09-23 23:32:00 73

转载 操作符重载(一)

目录 1. 操作符重载的概念 操作符重载的本质 操作符重载的规则 操作符重载的实现 2. 复数类的实现 运算操作符重载 比较操作符重载 赋值操作符重载 复数类测试 ...

2019-09-19 21:39:00 67

转载 时间获取函数

目录 time函数 clock_gettime函数 gettimeofday函数 由Linux内核提供的基本时间是自1970-01-01 00:00:00 +0000 (UTC)这一特定时间以来经过的秒数,这种描述是以数据类型time_t表示的,我们称其为日历时间。获得日...

2019-09-18 23:32:00 1904

转载 文件和目录

目录 1. 文件类型 2. 文件访问权限 access函数 umask函数 chmod函数 3. 符号链接 4. 文件与目录操作 删除文件 创建目录 删除目录 ...

2019-09-18 23:20:00 50

转载 Linux五种IO模型

目录 1. IO模型 2. 阻塞式IO 3. 非阻塞式IO 1. IO模型Linux下可用的IO模型有5种,分别是:阻塞式IO非阻塞式IOIO复用信号驱动式IO(SIGIO)异步IO(Posix的aio_系列函数)其中,除了异步IO,其余都属于同步IO模型...

2019-09-18 23:09:00 87

转载 类中的函数重载

目录 1. 函数重载回顾 2. 类中的函数重载 1. 函数重载回顾函数重载的本质为相互独立的不同函数C++通过函数名和函数参数确定函数调用无法直接通过函数名得到重载函数的入口地址函数重载必然发生在同一个作用域中2. 类中的函数重载类的成员函数可以进行重载,包括构造函数的...

2019-09-18 23:07:00 196

转载 系统调用IO和标准IO

目录 1. 系统调用IO(无缓冲IO) 系统调用 常用系统调用IO函数 open close read write lseek ioctl 2. 标准IO(...

2019-09-18 22:58:00 296

转载 类的静态成员变量和静态成员函数

目录 1. 静态成员变量 2. 静态成员函数 3. 实战练习 1. 静态成员变量先来回顾一下普通成员变量通过对象名能够访问public成员变量每个对象的普通成员变量都是专属的,不能在对象之间共享在C++中还可以定义静态成员变量静态成员变量属于整个类所有,所有...

2019-09-18 22:57:00 125

转载 管道和FIFO

目录 1. 管道(无名管道) pipe函数 popen函数 2.FIFO(有名管道) 1. 管道(无名管道)pipe函数管道由pipe函数创建,提供一个单向半双工数据流,它没有名字,只能在父子进程间使用。#include <un...

2019-09-18 22:47:00 66

转载 对象的构造与析构(二)

目录 1. 析构函数 2. 对象的构造与析构顺序 多个对象之间 单个对象内部 3. const对象与const成员函数 const对象 const成员函数 4. 成员函数、成员变量与对象的...

2019-09-18 22:46:00 170

转载 System V共享内存

目录 1. 概述 2. System V共享内存API shmget shmat shmdt shmctl 3. 简单的程序 代码实现 common.h shmcreate....

2019-09-18 22:36:00 190

转载 System V消息队列

目录 1. 概述 2. 消息队列API msgget msgsnd msgrcv msgctl 3. 简单的程序 代码实现 common.h msgcreate.c ...

2019-09-18 22:25:00 123

转载 System V信号量

目录 1. System V IPC 概述 IPC键和ftok函数 ipc_perm结构 创建与打开IPC对象 ipcs和ipcrm命令 2. System V信号量 计数信号量集 semg...

2019-09-17 22:52:00 252

转载 Posix共享内存

目录 1. 概述 2. mmap、munmap和msync函数 mmap munmap msync 3. 内存映射IO 父子进程同步——Posix有名信号量 父子进程同步——Posix无名信号量 ...

2019-09-16 22:39:00 268

转载 对象的构造与析构(一)

目录 1. 构造函数的定义 2. 构造函数的重载 3. 两个特殊的构造函数 4. 初始化列表的使用 1. 构造函数的定义从程序设计的角度,类的对象只是变量,在栈上和堆上创建对象时,成员变量初始为随机值;创建全局对象时,成员变量初始为0值。C++中可以定义...

2019-09-16 20:53:00 151

转载 Posix消息队列

目录 1. 概述 2. Posix消息队列 创建与打开 关闭与删除 消息队列属性 获取属性 设置属性 消息发送与接收 3. 消息队列限制 4. 生产者消费者...

2019-09-16 20:49:00 274

转载 函数重载分析

目录 1. 函数重载 2. 函数重载与函数默认参数 3. 函数重载与函数指针 1. 函数重载函数重载,指的是用同一个函数名搭配不同的参数,从而定义不同的函数。重载函数在本质上是相互独立的不同函数,它们的函数类型不同。函数重载至少需要满足下面三个条件之一参数个数不同...

2019-09-16 20:01:00 130

转载 生产者-消费者问题

目录 1. 概述 定义 缓冲区 2. 典型模型 模型一 模型二 可选需求 3. 数据结构队列C语言实现 4. 代码实现——互斥锁 + 条件变量 5. 代码实...

2019-09-15 14:50:00 679

转载 C++中的强制类型转换

在C语言中,强制类型转换的方式为(Type)Expression,另外还有一种现在已经不用的旧式写法Type(Expression),这两种方式是等价的。但是,C语言的强制类型转换方式存在一些问题:过于粗暴,可以在任意类型之间进行转换,编译器很难判断其正确性难于定位,在源代码中无法快速定位所有使用强制类型转换的语句然而,强制类型转换在实际工程中几乎是不可避免的,为此C++将强...

2019-09-15 11:59:00 94

转载 new/delete与命名空间

目录 1. new/delete 2. 命名空间 1. new/deleteC++中的动态内存分配C++通过new关键字进行动态内存申请C++中的动态内存申请是基于类型进行的delete关键字用于内存释放//变量申请与释放Type *pointer = new Type;...

2019-09-15 11:42:00 114

转载 函数默认参数与占位参数

目录 1. 函数参数默认 2. 函数占位参数 1. 函数参数默认C++可以在函数声明时为参数提供一个默认值,若函数调用时没有提供参数的值,则使用默认值。函数参数的默认值只能在函数声明中指定,在函数定义时不能再出现默认值,否则编译器会报错。//函数声明时指定参数默认值void fun...

2019-09-15 11:01:00 337

转载 Posix信号量

目录 1. Posix IPC 概述 IPC名字 创建与打开IPC 读写权限与创建标志 用户访问权限 IPC对象的持续性 2. 信号量概述 信号量定义及分类 ...

2019-09-15 08:37:00 163

转载 引用的本质分析

目录 1. 引用的定义 2. 引用的本质 3. 引用的意义 4. 特殊的引用—const引用 5. 引用和指针的关系 1. 引用的定义C++新增加了引用的概念:引用可以看作一个已定义变量的别名引用的语法Type &name =...

2019-09-14 20:47:00 90

转载 内联函数分析

目录 1. 内联函数的声明 2. 内联函数的特性 3. 内联函数与编译器 4. 内联函数的限制 1. 内联函数的声明在C++中,const常量可以代替宏常数定义,而宏代码段则推荐使用内联函数来代替。C++中使用inline关键字声明内联函数inlin...

2019-09-14 13:03:00 79

转载 线程同步

目录 1. 线程同步概述 线程同步定义 线程同步方法 2. 互斥锁 互斥锁概念 互斥锁基本API 初始化与销毁 上锁与解锁 两个特殊的上锁函数 示例代码 ...

2019-09-14 12:54:00 63

转载 C到C++的升级

目录 1. C与C++的关系 2. 变量声明与定义 变量可以在使用时定义 不允许定义同名全局变量 标识符必须显示声明类型 3. struct加强为类型 4. 三目运算符功能升级 5. const功能升级 ...

2019-09-13 16:48:00 67

转载 线程安全与可重入函数

我个人对可重入函数的理解如下:可重入函数需要指明可重入对象,分为线程可重入函数和信号可重入函数线程可重入函数是可以被多个线程同时调用、且保证安全的函数,也叫做线程安全函数信号可重入函数是在信号处理程序中保证调用安全的函数,也叫做异步信号安全函数下图是APUE书中所说的POSIX.1中不能保证线程安全的函数,换而言之,未列入图中的函数都是线程可重入函数。通过和信号可重入函数...

2019-09-13 16:28:00 57

转载 线程控制

目录 1. 线程与进程 线程的概念 深入理解进程和线程 2. 多线程 什么是多线程 多线程模型的好处 3. 线程标识 4. 线程创建 函数原型 参数说明 ...

2019-09-13 16:15:00 184

转载 信号

目录 1. 信号概念 信号的定义 信号的产生 信号的处理 可靠信号术语 Linux常用信号及默认动作 2. signal函数 3. 信号集与信号屏蔽字 信号集 信号屏蔽字 ...

2019-08-29 22:18:00 84

转载 进程控制

目录 1. 程序和进程 2. 进程状态 3. 进程标识 4. 进程创建 5. 进程终止 6. 避免僵尸进程 僵尸进程的产生与危害 wait函数 waitpid函数 7. ex...

2019-08-29 22:17:00 87

转载 第6课 - 线性表的顺序存储结构及实现

1. 线性表的顺序存储结构【顺序存储结构定义】线性表的顺序存储结构,指的是用一段地址连续的存储单元依此存储线性表中的数据元素。【设计思路】可以用一维数组来实现顺序存储结构的线性表。1 template <typename T>2 class SeqList : public List<T>3 {4 protected:5...

2018-06-24 17:20:00 170

转载 第5课 - 线性表的本质和操作

1. 线性表的抽象定义线性表是具有相同类型的n(n>=0)个数据元素的有限序列。 (a0, a1, ... , an-1)ai是表项(数据元素),n是表长度 。2. 线性表的性质a0是线性表的第一个元素,只有一个后继an-1是线性表的最后一个元素,只有一个前驱除a0和an-1外的其他元素ai,既有前驱,又有后继直接支持逐项...

2018-06-18 18:01:00 67

转载 第4课 - 顶层父类的创建

在开始创建顶层父类之前,先补充两点知识,主要是为了解释为什么需要顶层父类,以及顶层父类在DTLib中的作用。1. 软件架构实践经验在面向对象软件架构实践中,总结出了以下三条经验:- 尽量使用单重继承的方式进行系统设计- 尽量保持系统中只存在单一的继承树- 尽量使用组合关系代替继承关系但不幸的是:- C++语言的灵活性使得代码中可以存在多个继承树...

2018-05-27 18:31:00 92

转载 第3课 - 异常类构建

本篇开始正式进入数据结构的相关内容,目标是基于C++语言,设计一个可复用的数据结构类库DTLib。1. C++异常类简介- C++异常的类型可以是自定义类类型- catch语句对于类类型异常的匹配,依旧是自上而下严格匹配- 赋值兼容性原则(在出现父类对象的地方,可以用一个子类对象来代替)在异常类型匹配中依然适用- 匹配子类异常的catch放在上面-...

2018-05-20 14:10:00 83

空空如也

空空如也

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

TA关注的人

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