생각할 비트 ... 성분 1 : ostream에서 파생 된 객체에 대한 포인터를 취하는 함수가있는 (미리 컴파일 된) 공유 라이브러리의 클래스 :템플릿 함수가 공유 라이브러리에 전달됨 (C++)
void ClassName::SetDefaultStream(std::ostream *stream)
성분 2 :
몇 가지 일반적인 템플릿 스트림 연산자 표준 : : ostream에에서 내 자신의 클래스 유도 :
class MyStream : public std::ostream
{
public:
template <typename T> MyStream &operator<<(const T &data)
{
std::cout << data;
return *this;
}
}
이제 나는 instantiati의 주소를 전달하는 경우 이 클래스의 SetDefaultStream 메서드에 어떤 일이 생길까요? 컴파일 타임에 컴파일러는 공유 클래스의 스트림에 어떤 유형이 적용될 것인지 전혀 모르기 때문에 코드가 합성되지는 않을 것입니다. 그것은 컴파일에 실패 할 것인가? 컴파일 될 것인가? 그리고 실행될 때 충돌 할 것이고 컴퓨터에서 연기가 나올 것인가?