{ 왜냐하면, 함수의 인자 처리 순서는 각 컴파일러마다 다르며, 컴파일러 버전마다 다를 수도 있다. 결국 함수 인자의 처리 순서를 예상하고 함수에 인자를 전달한다면, 나중에 문제가 생길 위험이 있다. 그러니 이번 항목에서 말하는 제목을 반드시 기억해 두는 것이 좋다. 이 책은 안드레이 안렉산드레스쿠(Andrei Alexandrescu)와 허브 셔터(Herb Sutter) 가 만든 책으로 허브 셔터는 자신의 Exceptional C++ 에서 "스마트 포인터를 잘 사용하는 방법"에 대해서 썻던 항목들에, 이 문제점도 같이 정리해 두었었다. 그러므로 나는 이 항목에 대해서 더 이야기 하지는 않을 것이다. 왜냐하면 아주 간단하게 예만 보여줘도 충분히 이해 가능하기 떄문이다. 이 예제코드는 함수의 인자 처리 순서..
C++ 코드의 정석 검색 결과
{ 즉, 암시적 타입 변환을 피하기 위해 오버로딩을 쓰라는 것이다, 그 이유는 C++은 동일한 이름의 함수라면 매개변수로 함수들을 구분짖는데, 이런 함수들 중에서 전달된 인자와 타입이 가장 "비슷한" 함수가 있다면, 암시적으로 형이 변하기전에 그 함수가 호출 되고, 없다면 모호성 에러를 벹어내게 해주기 때문이다. 즉, 이런 C++의 특징을 이용하여, 암시적 타입 변환을 피하라는 것이다. 다음 코드는 함수 f() 들 중에 float 매개변수를 받는 함수가 없을 때, 모호성 에러를 벹어내며서 컴파일 되지 않는 것을 보여 준다. 모호성 에러 예) #include void f( char ) { std::cout
{ 항목 27에서 표준적인 형식이 어떤 형식인지 말했으니 패스하고, 표준적인 형식의 ++와 --의 구현론( 한줄로 설명 된다)과 접두 형식을 왜 사용해야 하는지 알아 보자. 우선 알아야 할 것은 "++", "--"의 표준적인 형식이 무엇인가? 인데, 전위 연산자로 후위 연산자를 구현하는것이 표준적인 형식이다. 이 항목에 대해서는 C++ Standard Template Library 에서 이야기한 내용을 쓰기보단, 구글에서~ "전위 연산자" 라고 검색을 하면 자세히 나오니 넘어가자 그렇다면 왜 접두형식을 사용 해야 하는가? 왜냐하면 후위 연산자는 전위연산자를 사용해서 구현했는데, 전위 연산자의 경우, 자기 자신을 변화시키고 자신을 리턴하는 반면, 후위 연산자는 먼저 자신을 복사한 값을 만들고, 전위 연산자..
{ 음... 난 이 제목을 보고 느끼는 것이 있다., "한글로 하면, 항상 어렵다." 는 것인데, 뭐 .. 어쩔수 없다. 마땅히 우리나라 말로 옮길 수 있는 단어는 저런거 밖에 없기 때문이지 않을까? 본론으로 빠르게 돌아가서 저 제목이 의미하는 바 가 무엇인지 알아 보자. 표준적인 형식이란? 말 그대로 표준적인 것들을 뜻하는데, 이 표준적인 것들은 많이 있지만, 여기에서 말하고자 하는 "표준적인 형식"이란, 바로 연산자 즉, operator에 대한 표준적인 형식을 뜻하는 것이다. 그렇다면 이런 표준적인 형식은 정확히 어떤 형식인가? 바로 C++ 표준에서 산술 및 할당 연산자를 구현할 때, 사용하는 형식, 즉, 산술 연산자를 구현할 떄는 산술 할당 연산자와 산술 연산자 두개를 제공해야 하며, 산술 연산자는..
런타임 오류와 컴파일 타임오류 등 정리한 곳 : http://pcclear.tistory.com/59 컴파일 타임에 에러가 나는 것은 전부 "문법" 에서 나게 된다. 이 문법은 런타임에 일어날 수 있는 많은 오류들을 잡아 준다. 예를 들어, explicit 키워드가 써진 생성자를 가진 객체를 매개변수로 하는 함수가 있을 경우, 해당 객체로 암시적 형변환 자체를 다 막아 줌으로써, 런타임에 생길 수 있는 오류를 잡아 줄 수 있다. 이것은 컴파일 타임에 런타임에 있을 수 있는 많은 오류들을 잡아 주기에 큰 역활을 한다.(개인적으로 이렇게 생각함) 다른 측면에서 보면, 런타임에 계산할 필요가 없는 상수들을 컴파일 타임에 계산하여, 사용 할 수도 있다. 이는 템플릿과 밀접한 관계를 가지고 있고, 메타 프로그래밍..
최근댓글