//#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;
}
父类指针和子类指针的步长问题
最新推荐文章于 2023-03-23 09:43:36 发布
本文通过一个 C++ 示例介绍了基类和派生类的内存布局,演示了多态性的实现方式,并展示了如何使用指针访问不同类型的对象及其成员函数。
1664

被折叠的 条评论
为什么被折叠?



