복사 생성자와 const 객체: 더 깊은 설명
C에서는 클래스를 정의할 때 일반적으로 다음 규칙을 따르는 것이 좋습니다. of Three에서는 복사 생성자, 할당 연산자 및 소멸자를 구현하도록 제안합니다. 복사 생성자는 기존 객체에서 데이터를 복사하여 새 객체를 생성하는 일을 담당합니다.
복사 생성자에서 const 사용
전통적으로 사용하는 것이 좋은 습관으로 간주됩니다. const는 다음 예와 같이 복사 생성자의 인수 유형입니다.
class ABC {
public:
int a;
int b;
ABC(const ABC &other)
{
a = other.a;
b = other.b;
}
};
const가 없으면 어떻게 되나요?
아래 표시된 것처럼 const 한정자를 생략하면 몇 가지 문제가 발생합니다.
class ABC
{
public:
int a;
int b;
ABC(ABC &other)
{
a = other.a;
b = other.b;
}
};
첫째, const 객체의 복사본을 만드는 것이 불가능해집니다. 인수는 const로 표시되지 않으므로 const가 아닌 개체만 허용할 수 있습니다. 따라서 const 참조에서 새 개체를 초기화할 수 없습니다.
둘째, const가 없다는 것은 인수 개체가 복사 생성자 내에서 수정될 수 있음을 의미합니다. 복사 생성자의 목적은 기존 개체의 동일한 복사본을 만드는 것이므로 이는 일반적으로 바람직하지 않습니다. 복사하는 동안 원본 객체를 수정하면 예기치 않은 동작이 발생하거나 잠재적으로 잘못된 동작이 발생할 수 있습니다.
const 인수를 사용하는 이유
복사 생성자에서 const 인수를 사용해야 하는 몇 가지 강력한 이유가 있습니다. :
결론적으로 복사 생성자에서 const 인수를 사용하면 논리적 정확성, 개체 불변성, 임시 개체와의 호환성 등 상당한 이점을 얻을 수 있습니다. const가 아닌 인수가 적절한 예외적인 경우가 있을 수 있지만 일반적으로 const를 사용하는 것이 좋습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3