유사 이전의 질문이 있지만, 모든 사람이 물어 찾을 수있는 다른 질문 :static_cast 또는 toX()에 대한 "명시 적 연산자 X"에 의한 유형 변환?
- static_cast vs. direct call to conversion operator-
- 많은 이야기에 대한
static_cast
(C 스타일 캐스트 대 자주 언급static_cast<string>(x)
x.operator string()
대 관련 있지만 다른에 대해 설명 특급를 구현하는 방법을 결정할 때 고려해야 할 것은 무엇인가 그것에
) 함수 스타일의 캐스팅으로 클래스에 대한 불법적 인 변환? 내가 함수 toX()
을 가질 수
class myClass {
public:
explicit operator std::string() const {
...
}
};
const myClass x{...};
std::string str = static_cast<std::string>(x);
또는 :
C++ 11에서, 내가 명시 적 변환 연산자를 가질 수
내class myClass {
public:
std::string toString() const {
...
}
};
const myClass x{...};
std::string str = x.toString();
부분은 동일한 것 생각 하지만 일부는 시나리오 나 모범 사례 지침을 놓치고 있다고 생각합니다. , static_cast
부여
는 myClass::explicit operator std::string()
또는 std::string(myClass)
를 호출 할 수 있습니다,하지만 난 결정이 std::string()
가 변환 생성자가없는 경우 변환이 여기처럼 myClass
내에서 일어날 갖도록 제조 된 지점에서에 집중 해요 그래서이 구별은 작용하지 않습니다. 또한 상속 계층 구조 사이에서의 형 변환도 허용하지만, 여기에서도 문제가되지 않습니다.