나는 일반적으로 생성 된 기본 할당 연산자와 다른 서명이있는 자신의 대입 연산자, 정의 경우C++ 기본 할당 연산자는 언제 사용할 수 없게됩니까?
struct B;
struct A {
void operator = (const B& b) {
// assign something
}
};
이 경우 operator = (A&)
에 기본 할당 연산자를 수행 (등을 잘못 경우, 정정 해줘) 정의되지 않거나 액세스 할 수 없게됩니까?
AFAIK 이것은 다른 생성자를 정의하면 존재하지 않는 기본 생성자에 해당합니다. 그러나 이것이 다른 "마법"기본값의 경우인지 정말로 확신 할 수 없습니다.
내가 묻는 이유 : 기본 복사 생성자가 암시 적 유형 변환을 통해 실수로 호출되지 않도록하고 싶습니다. 그것이 존재하지 않는다면 결코 일어날 수 없습니다.
표준 참조 주셔서 감사합니다! 실제로 제 예제보다 더 많은 것을 말합니다. – xtofl
당신 말이 맞아요. 나는 내 대답을 지울거야. –
@Neil, 당신은 use = default가 무엇 일지 궁금해했습니다. 하나는 사용할 수있는 것을 명시 적으로 표현하고, 다른 하나는 액세스 가능성을 변경하는 것이고, 세 번째는 클래스의 진화가 그것을 깨뜨리지 않고 구현을 인라인하지 못하게하는 것입니다. 또 다른 정당성은 기능이 할당보다 더 넓고 기능을 사용하지 않아도 예외를 만들 수있는 인센티브가 없다는 것입니다. – AProgrammer