inside the c++ object笔记(一)

chapter1

struct

struct声明,class定义只会警告,实际由定义的关键字决定

 

对象

对象之中的变量在内存中的顺序为:

同access section中按照声明顺序,不同的access section按照section写的顺序

 

c++对象模型

对象内:

non-static data members(非静态数据成员)                      放在类内

static data member(静态数据成员)                                   放在类外独立一块(独立在任何对象外)

non-static func                                                                       类外独立一块

static func                                                                              类外独立一块

vptr -> vptbl -> virtual func                                                     vptr在类内

 

若数据复杂,则可以把数据成员分离出来作为一个struct

在旧的c中,由class继承数据struct

现在的做法是把struct的指针/引用/对象放在class的private中

 

三种模型

程序模型:数据函数分离

 

抽象模型ADT

单一对象加上接口

 

面向对象模型

基类分配统一接口给所有的派生类

 

 

class大小计算

non-static data member的大小

virtual函数的vptr

virtual base class 的 virtual base class pointer

齐位造成的补足空间(可能补在成员间可能补在对象边界)

 

void*

可以指向任何对象,但是无法执行任何操作

 

多态

引用与指针时实现多态机制的根本

 

在派生类赋给(初

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值