首页 > 编程 > C++ > 正文

读“深度探索C++模型”的一些理解

2019-11-08 00:49:09
字体:
来源:转载
供稿:网友


(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

同事推荐读的这本书,读完发现正是自己想要的!

之前疑惑的一些东西,有赖于尝试或猜测的,读完之后就比较清晰了:

例如

C++的类之于C的结构体,内存布局如何实现的?

C++的静态函数从内存结构上是如何存储的?

C++虚函数的调用效率如何?

构造函数的调用时机,是谁来确定的?

读完之后,模型实现清楚了,编译器做的事情有了了解,它的机理也就比较明白了。

也把自己认识到的几个点写下来:

1. C++的类之于结构体,有了函数,虚函数,静态函数,构造函数,类继承;

2. 虚函数的内存结构上是虚函数表指针;

    函数,静态函数不占用内存空间,相当于一个函数符号。

3. 编译期,函数的调用是翻译为 func(this,参数),静态函数翻译为 func(参数);

4. 构造函数、西沟函数的调用,由编译器在合适的位置调用。

5. 虚函数的调用效率也还是比较高的,调用时并不需要再查询,在编译器会确定虚函数的index,调用形如 call this->vptr[0] (this, 参数)。

6. 类继承从数据的结构上看,在一个数据结构上再附加上一段数据信息;虚函数--在构造函数中,编译器附加的代码填充的虚函数表。

7. 全局变量的初始化和析构是编译器在main的一开始和最后附加了调用的处理。

发现,编译器附加的处理,附加的代码真多,为了C++引入的特性操碎了心。

 

推荐使用C++,对C++和C的不同比较感兴趣,希望深入了解,但还没有读的同学,可以一读!

 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)


上一篇:protobuf C++ 使用示例

下一篇:C++-this指针

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选