gpt4 book ai didi

c++ - 基类中的数据成员出现在派生类中是否会导致内存浪费?

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:21 25 4
gpt4 key购买 nike

考虑这段代码:

class A
{
private:
int a,b;
public:
void getA(){ cout << a << b; }
void setA(int n1,int n2){ a = n1; b = n2; }
};

class B : public A
{
private:
int c;
};

int main(){
B b1;
b1.setA();
b1.getA();
return 0;
}

语句 B b1; 创建对象,为 int ab 消耗内存(它们是在 A 类中声明)。如果我只想使用 b 那么与 a 相关的内存就被浪费了。这不会导致内存浪费吗?特别是在大型程序中?

最佳答案

如果你说B只需要访问b而不是a,那意味着设计是错误的,你不应该使用继承首先。

继承是一种“is-a”关系。任何 B 都是 A,然后是一些。如果 B 仅使用某些 A 对象的某些成员,请考虑将该成员作为参数传递或解耦 BA(使用指向 B 内的 A 的指针)。 不要仅仅为了更容易访问成员而使用继承。

所以答案是肯定的,这是一种内存浪费,但只是因为它设计得不好。

关于c++ - 基类中的数据成员出现在派生类中是否会导致内存浪费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28361172/

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