0

速度と効率の観点から: ベストプラクティスと見なされるのは、一時オブジェクトを作成するか、(おそらく一時的な) 引数オブジェクトを分解することですか?

この例では、関数の実装は DRY 目的では相互に排他的です。どちらも示されているようには実装されませんが、一方は実際の作業を委任する他方に関して実装されます。

void SetPoints(double xA, double yA, double xB, double yB, double xC, double yC);
void SetPoints(const Point& A, const Point& B, const Point& C);

///Option one: create temporary objects:
void SetPoints(double xA, double yA, double xB, double yB, double xC, double yC) {
    SetPoints(Point(xA, yA), Point(xB, yB), Point(xC, yC));
}

//Option two: decompose object arguments
void SetPoints(const Point& A, const Point& B, const Point& C) {
    SetPoints(A.GetX(), A.GetY(), B.GetX(), B.GetY(), C.GetX(), C.GetY());
}
4

2 に答える 2

1

Point オブジェクトを受け取るものだけを実装してから、を受け取る Point コンストラクターを作成しますstd::initializer_list。したがって、個々の double を渡したい場合は、次のようなものを使用できます。

SetPoints({xA, yA}, {xB, yB}, {xC, yC});
于 2012-08-08T04:53:48.837 に答える