如何在类周围共享参数 - C ++

时间:2012-01-09 19:17:01

标签: c++

我有一个我打算用来执行计算的课程。我在其他地方声明了一个类的静态对象,用于获取结果。除了构造函数之外,该类还有一个公共函数。

public:
    double getProbability(PlayerStats &p1, PlayerStats &p2, Score &score);

如您所见,我有三个对象作为输入参数。然后我的班级有两个私人函数,从getProbability()调用。一个需要p1p2,另一个需要所有三个参数

我的问题是这个。将这些对象作为参数传递给函数是否更好,或者更好地创建私有成员变量并使用它们。

所以例如

   double MyClass::getProbability(PlayerStats &p1, PlayerStats &p2, Score &score){
            otherFunction(p1,p2);
            anotherFunction(p1,p2,score);
             ....
    }

     double MyClass::getProbability(PlayerStats &p1, PlayerStats &p2, Score &score){
            this->p1 = p1;
            this->p2 = p2;
            this->score = score;
            otherFunction();   //use member variables in these functions
            anotherFunction();
             ....
    }       

3 个答案:

答案 0 :(得分:4)

最好将它们作为参数传递,因为它们并不真正代表类状态,并且将它们存储为成员可能比仅仅继续传递引用更具性能成本。

但它看起来并不像你的类有任何状态,这让我相信这些方法的所有应该是合适的命名空间中的自由函数而不是类的成员(也许你来自Java背景?)。

答案 1 :(得分:2)

我更喜欢将参数传递给私有函数。就您的类可能由多个并发线程访问而言,最好将每个数据发送到其相关函数。

答案 2 :(得分:0)

您应该将参数直接传递给其他方法。即使其他函数使用它们也会非常混乱,因为函数签名中没有任何内容表明这些参数会被保留。

如果您需要其他功能中的某些参数,并且这些参数通过多次调用保持不变,您可以重构您的类。它将在构造函数中保持相同的那些,然后函数调用只传递将改变的那些。这实际上取决于您的应用程序的需求,以确定这是否是一种更好的方法。