第1章 关于对象-《深度探索C++对象模型》读书笔记

来源:互联网 发布:女超人知乎 编辑:程序博客网 时间:2024/05/22 00:31

本章主要讲述的内容是:加上封装后的布局成本,C++对象模式,关键词所带来的困扰,对象的差异。

加上封装后的布局成本,以一个简单的例子说明了C++基本上不会带来额外的负担,同时也说明了C++的主要负担是为了支持虚函数和虚基类机制而造成的。

C++对象模式,主要介绍了三种模型,当然了最后一种才是C++所采用的模型。但是在本小节中P10关于图1.3的说明中[主要缺点…就是了。],本人不太理解,如果哪位大虾知道请不吝赐教。

根据自己的理解和书中所述分析可得VC6.0所实现的C++对象模式如下所述:

每个对象的第前4个字节用来存储vptr(如果有的话),然后是父类的对象,然后才是该类本身的内容。静态成员变量和函数都不存储在对象中。上面所述的内容不考虑字节对齐。

关键词所带来的困扰部分本人感觉读的不太明白,但是根据书中所说和自己的经验总结如下:

1.在C++中struct一般用来声明一个集合。该定义不应该含有过多的普通函数,更不应该含有虚函数,也不应该做为父类。总而言之在C++中使用struct应该保持和在C中使用struct一样,当然要避免书中所述的那些问题。

2.struct不能用作模板中指定类型的关键字,不过class可以,推荐用typename。即如果写下

template<typename T>
class Test
{
private:
    T m_tValue;
};

时不能够使用struct替换typename,但是class可以替换typename,不过推荐使用typename。

3.如果想要定义一些接口,可以使用struct,因为struct里声明的东西默认是public的。

对象的差异部分主要说明了在C++中只有通过指针和引用才能实现多态。

原创粉丝点击