您的位置:首页 > 其它

父类指针和子类指针的步长问题

2018-01-14 18:02 316 查看
//#include "stdafx.h"
#include <iostream>

using namespace std;

class Animal
{
public:
Animal(int _a) : a(_a) {}
virtual void test() { cout << "父类test函数调用" << endl; }
virtual ~Animal() { cout << "~Animal" << endl; }
protected:
int a;
};

class Mouse : public Animal
{
public:
Mouse(int _b) : Animal(_b) {}
virtual void test() { cout << "子类test函数调用" << endl; }
virtual ~Mouse() { cout << "~Mouse" << endl; }
protected:
int b;
};

void Pause()
{
Mouse m[3] = { Mouse(2), Mouse(2), Mouse(2) };
Animal *Ap = m;
Mouse *Mp = m;
cout << sizeof(Animal) << "     " << sizeof(Mouse) << endl;     //父类int 4 vptr 4  子类int 4+4 vptr 4
Ap->test();
Mp->test();
Ap++;                                                           //+8
Mp++;                                                           //+12
//Ap->test();
Mp->test();

}

int main()
{
Pause();

system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: