关闭

C++类有继承时,析构函数必须为虚函数

虚函数与多态一文中讲了虚函数的用法和要点,但少讲了一点,就是虚函数在析构中的用法,本文就是修复一bug的。C++类有继承时,析构函数必须为虚函数。如果不是虚函数,则使用时可能存在内在泄漏的问题。假设我们有这样一种继承关系: 如果我们以这种方式创建对象:SubClass* pObj = new SubClass(); delete pObj;不管析构函数是否是虚函数(即是否加virtual关...
阅读(1646) 评论(0)

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程序运行的最基本和最常用的函数。 到...
阅读(3097) 评论(0)

assert预处理宏与预处理变量

assertassert是一个预处理宏,由预处理器管理而非编译器管理,所以使用时都不用命名空间声明,如果你写成std::assert反而是错的。使用assert需要包含cassert或assert.h,用法如下:assert(expr) assert主要用途是:用于调试,检测一些不应该出现的情况。如果expr为假(即为0),assert输出信息并终止程序的运行,如果expr为真,则什么也做。asse...
阅读(2150) 评论(0)

C++“隐藏实现,开放接口”的实现方案

为什么要有接口?接口就是一个程序与其它程序交流的窗口。就比如有一个电视机,我并不需要知道它是怎样工作的,我只要知道按电源键就可以开启电视,按节目加(+)减(-)可以切换电视频道就可以了。Java程序员都知道Java中有interface可以实现对外的接口,但C++并没有接口这样的语法,那它要好怎样实现对外提供接口呢?我们可以通过纯虚函数定义一个抽象类,专门用来声明一个类的功能。我们完成了一个程序模块...
阅读(4787) 评论(6)

C++中类的多继承

在写这一主题的文章之前,在网上找到一篇很非常好的文章C++之继承与多态。就没有必要做重复造轮子的事件了,那就从这篇文章开始吧!在c++中一个类可以从多个基类中派生(即可以有多个父类),这就是多继承。多继承的方式主要有两种:1. 简单版本 类C会同时拥有类A和类B的特性(属性和方法,也就是两个类的所有成员)。这种方式很简单这里就不多说,主要讲下面这种方式。2. 复杂版本 同样的,这个结构中...
阅读(8270) 评论(1)
7条 共2页1 2 下一页 尾页
    个人资料
    • 访问:3243782次
    • 积分:22250
    • 等级:
    • 排名:第341名
    • 原创:204篇
    • 转载:104篇
    • 译文:5篇
    • 评论:904条
    ★☆个人站点☆★
    ★☆个人说明☆★
    ★☆讨论交流☆★

    欢迎关注微信:思维与睿智

    欢迎加入 JavaQQ群:226159645

    欢迎加入 C/C++QQ群:226157456

    博客专栏
    最新评论