1.1 对象模型

本文探讨了C++中类的两种数据成员:static与nonstatic,并解释了三种成员函数的特点。此外,还深入介绍了C++对象模型,包括nonstatic数据成员、vptr及其在虚拟继承中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Q1: C++ 的类有两种数据成员:static 数据成员与 nonstatic 数据成员, 有三种成员函数:static, nonstatic,virtual。

Q2: 在虚继承的情况下,base class不管在继承串链中被派生多少次,永远只会存在一个实例(称为subobject)。

Q3: C++对象模型。

每个对象之内:
①.Nonstatic 数据成员
②.指向 vitual table 的指针 ( vptr ) ——其设定与重置由构造函数,析构函数与 copy assignment 运算符自动完成

个体对象之外:
①.static 数据成员
②.static 与 nonstatic 成员函数

Virtual Table:
每一个类产生一堆指向 virtual function 的指针,放在表格中,该表格被称为 virtual table

继承类关系:
假设存在一个 base class table ,该表格中每个slot内含一个相关的 base class 的地址,这样每个类对象中会含有一个 bptr,指向该base class table

** 使用指针或者 table 将引入间接性。间接性的缺点:空间与存取时间上的额外负担。间接性的优点:类对象的大小不会因为其base class的改变而受到影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值