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;
}
文章目录