C++继承:共有,私有,保护
摘要:公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。3. 保护继承(protected)保护继承的特点是基类的所有公有成员和保护成员都成为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。下面列出三种不同的继
阅读全文
posted @
2012-05-31 17:00
莫水千流
阅读(624)
推荐(0) 编辑
使用 GDB 调试多进程程序
摘要:GDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较。GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面这个三进程系统:进程 Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程。如何使用 GDB 调试 proc2 或者 proc3 呢?实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。如果你事先在子进程代
阅读全文
posted @
2012-05-30 09:37
莫水千流
阅读(422)
推荐(0) 编辑
用gdb调试core dump文件
摘要:在Unix系统下,应用程序崩溃,一般会产生core文件,如何根据core文件查找问题的所在,并做相应的分析和调试,是非常重要的。什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个c
阅读全文
posted @
2012-05-29 14:10
莫水千流
阅读(365)
推荐(0) 编辑
第37条:避免对函数中继承得来的默认参数值进行重定义
摘要:让我们开门见山的讨论本话题:可以继承的函数可以分为两种:虚拟的和非虚拟的。然而,重定义一个非虚拟的派生函数始终是一个错误(参见第36条),因此,我们可以放心地将此处的讨论范围缩小至以下情况:继承一个含有默认参数值的虚函数。此情况下,本条目的证明问题则显得十分了然:虚函数是动态绑定的,而默认参数值是静态绑定的。你说啥?静态绑定于动态绑定之间的区别已经让你头晕目眩了?(静态绑定又称早期绑定,动态绑定又称晚期绑定,这是官方说法。)我们只好复习一下了。一个对象的静态类型就是你在对其进行声明时赋予它的类型。请考虑下面的类层次结构:Code highlighting produced by Actipro
阅读全文
posted @
2012-05-23 09:18
莫水千流
阅读(1359)
推荐(2) 编辑
C++构造函数调用顺序
摘要:1、创建派生类的对象,基类的构造函数函数优先被调用(也优先于派生类里的成员类);2、如果类里面有成员类,成员类的构造函数优先被调用;3、基类构造函数如果有多个基类则构造函数的调用顺序是某类在类派生表中出现的 顺序而不是它们在成员初始化表中的顺序;4、成员类对象构造函数如果有多个成员类对象则构造函数的调用顺序是对象在类中 被声明的顺序而不是它们出现在成员初始化表中的顺序;5、派生类构造函数 作为一般规则派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递 给适当的基类构造函数否则两个类的实现变成紧耦合的(tightly coupled)将更加难于 正确地修改或扩展基类的实现。(...
阅读全文
posted @
2012-05-21 10:47
莫水千流
阅读(565)
推荐(0) 编辑
[精华] 跟我一起写 Makefile
摘要:概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。 因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了
阅读全文
posted @
2012-05-08 14:32
莫水千流
阅读(299)
推荐(0) 编辑