gpt4 book ai didi

c++ - 继承下基类的OOPS内存分配?

转载 作者:行者123 更新时间:2023-11-28 07:13:14 24 4
gpt4 key购买 nike

程序:

class A
{
int a;
public:

void geta()
{
a=10;
}
void puta()
{
cout<<"a : "<<a;
}
};

class B : public A
{
int b;
public:

void getb()
{
geta(); b=20;
}
void putb()
{
puta(); cout<<"b : "<<b;
}
};

int main()
{
B ABC;
ABC.getb();
ABC.putb();
return 0;
}

问题:上面的程序为派生类对象分配内存并调用它的相关方法。基类继承为public,变量'a'为private成员,不会被继承。

所以,程序不应该为这个变量分配内存。但是,当执行上面的代码时,'a' 变量将被分配,即使它不是继承的。

谁能帮我理解一下?谢谢。

最佳答案

as the variable 'a' is a private member, it will not get inherited. So, the program should not allocate memory for this variable.

你的假设是错误的。公共(public)继承为“is-a” 关系建模。也就是说,类 Derived is-a Base。您可以用 Base 做的任何事情,您应该也可以用 Derived 做。为了实现这一点,它必须必须包含 Base 包含的所有内容。

在你的例子中,这样说是完全合法的:

B b;
b.put_a();

也就是说,在B 对象上使用A 方法。如果 a 成员不存在,这将不起作用。

关于c++ - 继承下基类的OOPS内存分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20652193/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com