#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();
}
即使我们没有创建类setdata
的对象,A
如何工作(变量a
和b
如何获取内存)?如何使用类A
的对象b1
访问B
的私有变量?我很惊讶地看到我的程序正常运行。
答案 0 :(得分:3)
即使我们没有创建类
setdata
的对象,A
如何工作(变量a
和b
如何获得内存)
但代码确实创建了一个类A
的对象,就在这里:
B b1;
由于B
派生自A
,因此B
类型的每个对象都包含A
类型的对象(基类子对象)
如何使用类
的对象A
b1
访问B
的私有变量?
是的,对象的类型为B
,但实际进行访问的函数(setdata
)是类A
的成员,因此拥有成员对所有成员的访问权限班级A
。
答案 1 :(得分:0)
这就是继承应该如何运作:https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.3.0/com.ibm.zos.v2r3.cbclx01/inher.htm
简而言之,您已经创建了一个B类型的对象,并且您已声明类B
继承自类A
。这意味着B 类型的对象也是A类,更具体。 float是一个数字的方式相同,而整数也是一个数字。狗是动物,而猫也是动物。
定义时
class B: public A
{
};
这意味着类B
应该继承类A
中的所有公共方法。 setdata
是一种公共方法,show_data()