目录
1.前言
本篇文章的所有代码例子,如果是windows上编译运行,则使用的是visual studio 2013。如果是RHEL6.5平台(linux kernal: 2.6.32-431.el6.i686)上编译运行,则其gcc版本为4.4.7,如下所示:
[root@MiWiFi-R1CM ~]# gcc --version
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
2.虚函数
在开始探讨对象中内存的具体分布之前,先来看下C++中虚函数的一些行为。
2.1.公有虚函数
子类通过覆盖公有虚函数的方式实现多态是最常见的情况。指向子类对象的基类指针调用被子类覆盖的函数,实际上,调用的是子类的函数。
参考以下代码:
#include <iostream>
class Base {
public:
virtual void foo() {
std::cout << "Base::foo" << std::endl;
}
};
class Derive :public Base {
void foo() {
std::cout << "Derive::foo" << std::endl;
}
};
int main() {
Base* pb = new Derive();
pb-&g