类成员值的合法或错误成员用法

Legit or wrong member usage of class member value?

本文关键字:成员 错误 用法      更新时间:2023-10-16

***编辑***在几条基于直觉赞同我自己观点的评论之后(作为参数传递(

我真正想要的是关于什么应该或不应该被用作班级成员的指导方针****编辑***

假设课堂示例少数公共功能

class Example
{
public:
A(int x);
G();
H();
Z();
private:
B();
C();
D();
E()
}

正在呼叫A,并呼叫A->B->C->D->E。在E函数中,我们需要使用A中得到的X参数,但B、C、D与之无关。

一种选择是将int x存储为类成员,然后在E中获取它。另一种方法是将它作为参数通过B->C-D->E。

在我看来,将它存储为成员是一种糟糕的做法,因为它与类状态或数据无关,但在大多数代码中,我看到的就是这样做的。

尝试在谷歌上搜索类成员的合法用法,但没有找到任何内容。

在我看来,oop中的成员使用全球。

我在哪里可以找到关于它的意见或数据?

我使用的是c++

另一种方法是将其作为参数通过B->C-D->E。

这个选项很有意义。

如果E需要一个自变量,那么它应该接受一个自变量。如果D调用E,那么D应该提供该参数。如果D不能提供一个其他的,那么它也需要它来接受这个论点,以此类推。我推荐这种方法。

在我看来,将其存储为成员是一种糟糕的做法,因为它与类状态或数据无关

这是合理的推理。

还要考虑是否所有这些函数都引用了对象本身。如果不是,它们可能应该是静态成员,甚至是自由函数。

A的接口判断,x似乎不是类的固有属性。因此,将它作为类的成员变量是没有意义的。

如果E需要它,它必须将它作为函数的参数
如果D需要用它调用E,则需要将它作为函数的参数
等等…

我认为您最好的选择是将xA()传递到E()

class Example
{
public:
A(int x);
G();
H();
Z();
private:
B(int x);
C(int x);
D(int x);
E(int x);
};