대입연산자 없이 NULL을 받을 수도 있나요?
글쓴이: dltkddyd / 작성시간: 수, 2014/03/26 - 1:31오후
template<typename T> class Siterator:public std::iterator<std::random_access_iterator_tag,T> { private: public: T* pt; //member function declaration; /*Siterator& operator=(T* _pt) { pt=_pt; return *this; }*/ }; int main() { Siterator<unsigned long int> obj1; obj1=NULL; if(obj1!=NULL) { cout<<"not null"<<endl; } else { cout<<"null"<<endl;l } return 0; }
위에서 obj1은 NULL을 대입연산자에 의해 대입을 받습니다. 그런데 operator=을 정의하지 않아도 obj1이 NULL을 대입받을 수 있는 것은 왜 그런가요?
Forums:
컴파일 해보셨어요?
컴파일 해보셨어요?
이상하네요.
위의 것은 되네요. 원래 코드는 이렇거든요.
도대체 이유를 모르겠네요.
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
Siterator(T* _pt)
Siterator(T* _pt) {
pt=_pt;
}
포인터를 인자로 받는 생성자가 있네요.
임의로 생략한 코드로는 제대로된 답변을 받기 힘듭니다.
대입문에서 암시적인 생성자 호출로 인한 묵시적 캐스팅 효과를 방지하시려면 생성자를 explicit으로 선언하면 됩니다.
댓글 달기