变量如何在不创建对象的情况下获得内存

how did the variables get memory without creating the object

本文关键字:情况下 内存 创建对象 变量      更新时间:2023-10-16
#include<iostream>
using namespace std;
class A
{
private:
int a,b;
public:
void setdata(int x,int y){
a=x;b=y;
}
void show_data(){
cout<<a<<b;
}
};
class B: public A{
};
main(){
B b1;
b1.setdata(3,4);
b1.show_data();
}

即使我们不创建类A的对象,setdata如何工作(变量如何ab获得内存(?以及如何使用类B的对象b1访问A的私有变量?我很惊讶地看到我的程序正常工作。

即使我们不创建类A的对象,setdata如何工作(变量如何ab获得内存(

但是代码确实创建了一个类A的对象,就在这里:

B b1;

由于B是从A派生的,每个类型为B的对象都包含一个类型为A的对象(基类子对象(。

如何使用类B的对象b1访问A的私有变量

是的,对象是B类型,但实际执行访问的函数(setdata(是类A的成员,因此具有成员对所有类A的访问权限。

这就是继承应该如何工作: https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbclx01/inher.htm

简而言之,您已经创建了一个类型 B 的对象,并且您已经声明了类B继承自类A。这意味着B 类型的对象也是 A 类型,只是更具体。就像浮点数是一个数字,而整数也是一个数字一样。狗是动物,猫也是动物。

当您定义时

class B: public A { };

这意味着类B应该继承类A的所有公共方法。setdata是一种公共方法,show_data()

相关文章: