C++高级编程
文章平均质量分 89
陌尘(MoChen)
程序员码龄: 14+年
IT从业经验: 10+年
曾任职单位: 北大方正,阿里巴巴
出版的书籍: 《人人都懂设计模式》、《Python 設計模式》
擅长的语言: C++/Python/JavaScript
涉及的技术: 电子书SDK,PC户端开发,Linux应用开发,前端开发
涉及的行业: 电子出版,在线教育,文档协调,智能机器人
展开
-
交叉引用的解决方法——类声明的应用
交叉引用的解决方法什么是交叉引用?什么是交叉引用?一言以蔽之,就是:A类中包含B类的对象,B类中包含A类的对象。以一场景为例我们先来看一个场景。假设有一个电子文档(Document)、一个文档下有多个页(Page),每个页下有多个文本单元(TextUnit,表示文档内元素的基本单位),一个文档中的所有文本单元对象都有唯一的ID。这样每创建一个文本单元时都要为其设置一个唯一的ID,我们在Documen原创 2015-07-12 23:00:39 · 5943 阅读 · 1 评论 -
assert预处理宏与预处理变量
assertassert是一个预处理宏,由预处理器管理而非编译器管理,所以使用时都不用命名空间声明,如果你写成std::assert反而是错的。使用assert需要包含cassert或assert.h,用法如下:assert(expr)assert主要用途是:用于调试,检测一些不应该出现的情况。如果expr为假(即为0),assert输出信息并终止程序的运行,如果expr为真,则什么也做。asse原创 2015-07-26 23:47:20 · 3289 阅读 · 0 评论 -
虚函数与多态
假设我们有三个类Person、Teacher、Student它们之间的关系如下: 类的关系图 普通成员函数【Demo1】 根据这个类图,我们有下面的代码实现#ifndef __OBJEDT_H__#define __OBJEDT_H__#include <string>#include <iostream>class Person{public: Person(con原创 2015-07-19 00:28:49 · 3295 阅读 · 0 评论 -
C++中类的多继承
在写这一主题的文章之前,在网上找到一篇很非常好的文章C++之继承与多态。就没有必要做重复造轮子的事件了,那就从这篇文章开始吧!在c++中一个类可以从多个基类中派生(即可以有多个父类),这就是多继承。多继承的方式主要有两种:1. 简单版本 类C会同时拥有类A和类B的特性(属性和方法,也就是两个类的所有成员)。这种方式很简单这里就不多说,主要讲下面这种方式。2. 复杂版本 同样的,这个结构中原创 2015-07-19 23:07:43 · 39444 阅读 · 4 评论 -
C Runtime Library 的来历
运行时库就是C Run-Time Library,是C而非C++语言世界的概念。取这个名字就是因为你的C程序运行时需要这些库中的函数。C Run-Time Library里面含有初始化代码,还有错误处理代码(例如divide by zero处理)。你写的程序可以没有 math库,程序照样运行,只是不能处理复杂的数学运算,不过如果没有了C Run-Time Library,main()就不会被调用,exit()也不能被响应。因为C Run-Time Library包含了C程序运行的最基本和最常用的函数。到转载 2015-10-11 17:45:59 · 8414 阅读 · 1 评论 -
C++“隐藏实现,开放接口”的实现方案
为什么要有接口?接口就是一个程序与其它程序交流的窗口。就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了。Java程序员都知道Java中有interface可以实现对外的接口,但C++并没有接口这样的语法,那它要好怎样实现对外提供接口呢?我们可以通过纯虚函数定义一个抽象类,专门用来声明一个类的功能。我们完成了一个程序模块原创 2015-07-24 00:10:52 · 9304 阅读 · 6 评论 -
C++类有继承时,析构函数必须为虚函数
虚函数与多态一文中讲了虚函数的用法和要点,但少讲了一点,就是虚函数在析构中的用法,本文就是修复一bug的。C++类有继承时,析构函数必须为虚函数。如果不是虚函数,则使用时可能存在内在泄漏的问题。假设我们有这样一种继承关系: 如果我们以这种方式创建对象:SubClass* pObj = new SubClass();delete pObj;不管析构函数是否是虚函数(即是否加virtual关原创 2016-12-21 09:24:14 · 22663 阅读 · 1 评论