C++类继承内存布局(三)
参考:http://blog.csdn.net/jiangyi711/article/details/4890889# (三)成员函数 类X中每一个非静态成员函数都会接受一个特殊的隐藏参数——this指针,类型为X* const 该指针在后台初始化为指向成员函数工作于其上的对象 在成员函数内,成员变量的访问是通过在后台计算与this指针的偏移来进行 struct P { int p1; void pf(); // new virtual void pvf(); // new }; 声明虚成员函数会造成对象实例占用更多的内存空间,因为虚成员函数需要虚函数表指针 声明非虚成员函数不会造成对象实例的任何内存开销 P:pf()的点定义: void P::pf() { // void P::pf([P *const this]) ++p1; // ++(this->p1); } P:pf()接收了一个隐藏的this指针参数,对每个成员函数的调用,编译器都会自动加上这个参数 在pf()函数内,对于成员变量的访问全部通过this指针进行, 有的继承层次下this指针需要调整,访问成员的开销会增大 1)覆盖成员函数 和成员变量一样,成员函数也会被继承。通过在派生类中重新定义基类函数,一个派生类可以覆盖基类函数定义 覆盖是静态的还是动态的依赖于成员函数是否被声明为虚函数 class A {