{ 무엇을 간접 변환이라고 하는가? 하나의 타입이 개발자가 눈치 못채게 다른 타입으로 변환 되는 것을 뜻하거나, 타입 변환이 정의하지 않아도 되는 것, 또는 변환 연산자 정의로 인하여, 변환되는 것을 뜻한다.(operator char*() 같은 것) 이것을 왜 피해야 하는가? 이것은 생성자의 호출이 예측하기 어렵게 만들고, 함수의 호출 역시 예측하기 어렵게 만들기 때문이다. 음~ 예를 들어 달라. #include class Widget { public: Widget( unsigned int ) { std::cout
묵시적 형변환 검색 결과
해당 글 3건
항목 40 : 간접 변환을 피하라. ( Avoid providing implicit conversions. )
책 정리/C++ Coding Standards : C++ 코딩의 정석
2009. 3. 30. 20:04
항목 39 : 자동 변환 (난이도 : 4)
이번 항목은 디버깅에 있어 정말 난해한 자동 변환에 대해서 알아본다. 자동 변환은 사용자 입장(함수들..)에선 편하지만, 구현자 입장(프로그래머)에서 보면 정말 염두해야 한다. 그 이유를 알아보자. 표준 C++ string 은 const char*로의 어떠한 암시적 변환을 가지지 않는다. 다음 코드를 보면 정말 필요할 듯 한데 말이다. #include int main( void ) { std::string s1( "hello" ), s2( "world" ); strcmp( s1, s2 ); // 에러 strcmp( s1.c_str(), s2.c_str() ); // 성공 return 0; } 이 코드의 에러 나는 부분에서 알아서 형 const char* 형태로 변환되면 얼마나 좋을까? 어챂 const c..
책 정리/Exceptional C++
2008. 10. 8. 11:17
항목 5 : 사용자 정의 타입변환 함수에 대한 주의를 놓지 말자.
항목 5 : 사용자 정의 타입변환 함수에 대한 주의를 놓지 말자. 개념정리 매개변수(parameter)는 함수를 선언할 때 괄호 안에 명시하는 데이터 인자(argument)는 함수를 호출할 때 넘기는 데이터 사용자 정의 타입변환 함수는 operator char () 같은 함수를 말한다.(쉽게 생각해 형변환 연산자 오버로딩이다) 이유 1. 프로그래머의 의도와 달리 함수가 잘못 호출될 수 있다. 예)std::cout
책 정리/More Effective C++ 1판
2008. 5. 15. 08:23
최근댓글