문제
Vector(const Vector& other) // Copy constructor
{
x = other.x;
y = other.y;
논쟁이 왜 Const입니까?
해결책
CTOR가 복사하는 것을 변경할 수 없다는 것을 보장하는 답변을 얻었습니다.
그러나 더 중요한 것은 임시 객체가 비정규 기준에 결합 할 수 없다는 것입니다. COPTR는 Const 객체를 참조하여 임시 객체의 사본을 만들 수 있어야합니다.
다른 팁
논쟁을 수정하지 않기 때문입니다 other
CONST CORT CTOR 내부.
당신이했을 때 x = other.x
this->x = other.x
. 그래서 당신은 만 수정하고 있습니다 this
값을 복사하여 객체 other
변하기 쉬운. 이후 other
변수는 여기에서 읽기 전용이며 Const-Ref로 전달됩니다.
하기 위해 ~ 아니다 변화 할 수 있습니다 other
(사고로)?
사본 생성자를 사용하여 하나의 객체를 다른 객체에 복사하려고 할 때, 우리는 원래 객체 (복사중인)의 원본 사본을 유지해야하므로 객체를 통과하는 동안 일정하게 만들고 참조별로 전달합니다.
사본 생성자의 아이디어는 당신이의 내용을 복사한다는 것입니다. other
객체에 this
물체. const는 당신이 수정하지 않도록합니다. other
물체.
const
.
Vector(const Vector& other)
{
//Since other is const, only public data member and public methods which are `const` can be accessed.
}
예를 들어 객체를 복사하려면 유용 할 수 있습니다.
...
const Vector& getPosition();
...
Vector* v = new Vector(getPosition());
그렇지 않은 경우 Vector(const Vector& other)
이 예제는 구문 오류를 만듭니다.
제휴하지 않습니다 StackOverflow