const値がオブジェクトのコンストラクタに渡されるとき、それらは参照または値によって渡されるべきですか?
コンストラクタと初期化子のすべての教科書の例は値渡しですが、これは私にとっては非効率的です。定数またはコンストラクタのメンバを参照または値で渡す必要がありますか?
値渡しで引数をすぐに使用してメンバー変数を初期化すると、2つのコピーが作成されますか?これはコンパイラが自動的に処理するものですか?
class Point {
public:
int x;
int y;
Point(const int _x, const int _y) : x(_x), y(_y) {}
};
int main() {
const int a = 1, b = 2;
Point p(a,b);
Point q(3,5);
cout << p.x << "," << p.y << endl;
cout << q.x << "," << q.y << endl;
}
正しい
class Point {
public:
int x;
int y;
Point(const int& _x, const int& _y) : x(_x), y(_y) {}
};
どちらもコンパイルして同じことを行うが、対?
「const」を使用すべき/使用すべきではないことについて語っている[GotW記事(#6)](http://www.gotw.ca/gotw/006.htm)があります。 –