當const值傳遞給對象的構造函數時,是否應該通過引用或值傳遞它們?
構造函數和初始化函數的所有教科書示例都按值傳遞,但這對我來說似乎效率低下。應該通過引用或值傳遞常量構造函數嗎?
如果按值傳遞並且參數立即用於初始化成員變量,是否創建了兩個副本?這是編譯器會自動處理的東西嗎?
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) {}
};
編譯和做同樣的事情,但它是正確的?
有一個[gotW文章(#6)](http://www.gotw.ca/gotw/006.htm),講述你何時應該/不應該使用`const`。 – 2011-01-07 23:53:01