// 继承.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
struct person{
int age;
int sex;
};
struct student:person{
int grade;
int intst;
};
void test(){
//person per;
//per.age=1;
//per.age=2;
/*
00401028 mov dword ptr [ebp-8],1
0040102F mov dword ptr [ebp-8],2
*/
student xm;
xm.age=1;
xm.grade=2;
xm.intst=3;
xm.sex=4;
/*00401028 mov dword ptr [ebp-10h],1
0040102F mov dword ptr [ebp-8],2
00401036 mov dword ptr [ebp-4],3
0040103D mov dword ptr [ebp-0Ch],4
*/
//xm.age=12;
// xm.sex=13;
// xm.age=14;
//person* p1=&xm;
//printf("%d\n",p1->age); //可以用父类的指针指向子类的对象,但是只能访问父类的成员,而且安全,强制类型转化之后可以用子类的指针指向父类的对象
//但是不安全,因为子类指针所能表示的范围大于父类对象所表示的范围,
//student* p2=(student*)&per;
// printf("%d\n",p2->age);
}
int main(int argc, char* argv[])
{
test();
printf("Hello World!\n");
return 0;
}
//继承的本质就是成员的的复制,在子类初始化时,会将父类拥有的成员也复制到子类中