C++札记
Hypen.Shi
还没退休的程序员
展开
-
关于虚析构函数
//base.h 基类声明文件class CBase{public: virtual ~CBase() = 0;}// sub.h 子类声明文件#include "base.h"class CSub : public CBase{public: CSub(); ~CSub();}// sub.cpp 子类实现文件#include "...原创 2010-07-27 14:59:00 · 490 阅读 · 0 评论 -
在常量函数中改变非常量成员(mutable )
class ClassName{public: int Fun(const int data) const { m_data = data; return 1; }private: mutableintm_data;};将非常量成员数据声明加上mutable前缀...原创 2010-07-27 17:53:00 · 540 阅读 · 0 评论 -
'char **' 和 'const char **'的兼容性问题
有时候必须非常专注的阅读ANSI C 标准才能找到某个问题的答案。一位销售工程师把下面的代码作为测试例子发给SUN的编译器小组。#include<stdio.h>void foo( const char **P ){}int main( int argc, char **argv ){ foo( argv ); return 0;}在VC6....转载 2010-07-28 13:14:00 · 1569 阅读 · 0 评论 -
虚函数表
虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例(注:抽象类即有纯虚函数的类不能被实例化。)中这个表被分配在了这个实例的内存中(注:一个类的虚函数表是静态的,也就是说对这个类的每个实例,他的虚函数表的是固定的,不会为每个实例生成一个相应的虚函数表。),所以,当转载 2010-07-28 15:44:00 · 548 阅读 · 0 评论 -
virtual public CParent的含义及作用——虚基类
表示虚拟继承,和普通继承是C++的两种多重继承方式。例如CB1、CB2 继承CA 而CC多重继承CB1、CB2如果普通继承则CC包含两份CA的拷贝,分别来自于CB1、CB2而虚拟继承则指包含一份CA的拷贝转载 2010-08-11 11:59:00 · 767 阅读 · 0 评论 -
位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象...原创 2010-12-02 15:32:00 · 632 阅读 · 0 评论