(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)
新闻热点
疑难解答
图片精选