Chinaunix首页 | 论坛 | 博客
  • 博客访问: 789121
  • 博文数量: 95
  • 博客积分: 6011
  • 博客等级: 准将
  • 技术积分: 1342
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-12 16:58
文章分类

全部博文(95)

文章存档

2009年(44)

2008年(51)

我的朋友

分类: C/C++

2008-09-03 20:09:42

(三)   单一继承且无虚函数

1. 定义与实验

定义一个空类C014从C011继承,

struct C011
{
C011() : c1_(0x02), c2_(0x03) {}
char c1_;
char c2_;
};

struct C014 : private C011
{
};

运行如下代码打印它们的大小及对象中的内容。
PRINT_SIZE_DETAIL(C014)

结果为:
The size of C014 is 2
The detail of C014 is 02 03


2. 对象布局

C014:
    
 

3. 相关说明

  C014的大小为2字节,也就是C011的大小,对象的内存值也是在C011的构造函数中初始化的两个值0x0203。这里我们可以发现父类的成员变量悉数被子类继承,并且于继承方式(公有或私有)无关。继承方式只影响数据成员的“能见 度”。 因此关于普通继承,子类的对象布局为父类中的数据成员加上子类中的数据成员。子类对象中属于从父类继承的成员变量由父类的构造函数初始化。通常会调用默认构造函数,除非子类在它的构造函数初始化列表中显式调用父类的非默认构造函数。如果没有指定,而父类又没有缺省构造函数,则会产生编译错误。

阅读(846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~