개체의 생성자에 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) {}
};
모두 컴파일하고 같은 일을하지만, 대?
'const'를 사용해야 할 때와 사용하지 말아야 할 것에 대해 이야기하는 [GotW article (# 6)] (http://www.gotw.ca/gotw/006.htm)이 있습니다. –