gpt4 book ai didi

C++ 私有(private)函数 : Whether to pass class member variable by function parameter, 或不

转载 作者:可可西里 更新时间:2023-11-01 18:29:43 26 4
gpt4 key购买 nike

这是一个在 C++ 类实现中反复出现的问题。我很好奇人们在这里的想法是什么。您更喜欢哪种代码,为什么?

class A
{
public:
/* Constructors, Destructors, Public interface functions, etc. */
void publicCall(void);

private:
void f(void);

CMyClass m_Member1;
};

void A::publicCall(void)
{
f();
}

void A::f(void)
{
// do some stuff populating m_Member1
}

或者替代方案:

class A
{
public:
/* Constructors, Destructors, Public interface functions, etc. */
void publicCall(void);

private:
void f(CMyClass &x);

CMyClass m_Member1;
};

void A::publicCall(void)
{
f(m_Member1);
}

void A::f(CMyClass &x)
{
// do some stuff to populate x,
// locally masking the fact that it's really m_Member1
}

我想我总是更喜欢第二个,因为这样 f 就可以在 CMyClass 的任何实例上运行,但是,也就是说,我有很多代码,第一个是完全有效,因为 f 只会在 m_Member1 上运行,我真的将它分成两个函数以使代码更具可读性。

是的,这更像是一个讨论问题而不是“回答”问题,但我对推理更感兴趣。我会将提供良好推理或良好标准的响应标记为答案。

此外,请记住这只是一个玩具示例。在现实中类(class)会比这更大,因此组织很重要。

最佳答案

由于您是在征求意见,如果独立的 f(CMyClass&) 函数有意义且可实现,那么我也赞成该选项。如果 f 执行的操作仅在类 A 的上下文中有意义,如果 CMyClass 仅在 A 的上下文中有意义,或者它取决于A 的其他属性。我认为必须根据问题来决定。

关于C++ 私有(private)函数 : Whether to pass class member variable by function parameter, 或不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9828827/

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