C++ 子类的大小及函数调用
子类的大小及函数调用
子类中会包含父类的所有变量,会用于当你将子类对象传给父类时进行调用。
如下面的例子:
A类是父类,有两个变量,B是子类重载了一个变量。
那么申请一个B的对象,首先内存中先是A的两个变量,然后是B的一个变量,总计3 * 4=12个字节
那么直接访问B的这个i变量会是访问到了B的i==20,如何把这个对象给A的指针,当作A的对象来访问,那么就会调用A的i。
#include<string.h>
#include<algorithm>
#include <stack>
#include<queue>
#include <cstdio>
#include <iostream>
#include <map>
using namespace std;
class A {
public:
int i = 10;
int c = 30;
int sum() {
return getI() + 10;
}
int getI() {
printf("A geti\n");
printf("%x\n", &i);
return i;
}
int sum1() {
return i + 10;
}
};
class B :public A
{
public:
int i = 20;
int getI() {
printf("B geti\n");
printf("%x\n", &i);
return i+15;
}
};
int main()
{
B b;
cout << b.getI() << endl;
/*cout << b.sum() << endl;
cout << b.sum1() << endl;*/
printf("sizeof B\n %d\n", sizeof(b));
A *a=&b;
cout << a->getI() << endl;
printf("sizeof B\n %d\n", sizeof(b));
/*cout << a->sum() << endl;
cout << a->sum1() << endl;*/
int c;
cin >> c;
return 0;
}