阅读背景:

一定要注意c++父类与子类指针步长的问题!

来源:互联网 

一、先看个错误案例

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;

class Parent
{
public:
	Parent(int a)
	{
		this->a = a;
	}
	virtual void print() {
		cout << "Parent::print()" << endl;
	}

	int a;
};
class Child :public Parent
{
public:
	Child(int a) :Parent(a)
	{

	}
	virtual void print() {
		cout << "Child::print()" << endl;
	}

	int b;
};
int main()
{
	Child array[] = { Child(0),Child(1),Child(2) };
	Parent *pp = &array[0];
#if 1
	for (int i = 0; i < 3; i++,pp++)
	{
		pp->print();
	}
#endif 
	return 0;
}#define _CRT_SECURE_NO_WARNI



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: