항목 28. 전역 네임스페이스를 분활한다. 이유 1. 잠재적 모호성을 경계하기 위해 2. 라이브러리 파일의 이식성 증가를 위해 해결 방법 1. using namespace의 사용시 반드시 필요한가 자문해 본다. 2. 간단한 것은 그냥 직접 네임스페이스를 기재해 사용 한다. 3. 네임스페이스를 정의해둔다. 주의 사항 1. 무분별한 namespace는 사용치 않는다. 개인적 생각 1. 어디까지나 이식성과 가독성을 위해서이다. 이 두가지가 21세기형 프로그래밍 기법이다! 라고 저자가 은근히 말하는거 같다; 2. 보기 좋은 떡 먹기도 좋다. 라는 .. 생각이 난다.
모호성 검색 결과
우선 잠재적 모호성이란? #include class A { public: A(const B&); }; class B { public: operator A() const; }; int main() { void f(const A&); B b; f(b); // B클래스의 operator A() 가 호출될까? // A클래스의 생성자 A() 가 호출될까? } 이런 경우를 잠재적 모호성이라 한다. 이유. 1. 컴파일 타임 중 예상치도 않은 오류가 날수 있다. 2. 라이브러리 파일의 이식성이 엄청나게 떨어진다. 해결방법 1. 네임스페이스를 사용한다.( 이 방법은 가독성을 떨어 뜨릴수 있다...) 2. 항상 디버깅이 가능한 코딩 습관을 길러야 한다; 3. 설계를 잘 하는 방법밖에 없다. 개인적인 생각 1. 이 이야기에..
우선 수치형 타입 이란? 기본자료형인 char long int float double 을 말한다. 포인터형 타입이란? char* long * .. 등등 이유 1. 오버로딩 시 그 모호성이 생길 가능성이 충분하다. (여기서 모호성은 ... VC2005 표기된 말을 그대로 인용한것으로 개인적 생각에 써 두겠다) 2. NULL 포인터와 수치형 타입의 0에 대해서 .. 매우 불확실하다. (사람의 눈으로.. 사실 0은 int형 으로 파악되고 FLASE 로 파악된다. 그것이 NULL 포인터라 할지라도) 해결 방법 1. 0이런 무엇인가? 란 답을 가지고 있어야 한다. 2. 수치오버로딩 시 오버로딩이 되는 매개변수의 변화에 대해서 생각해 두어야 한다. 3. 포인터형일 때는 다음과 같은 임시객체를 만들어 사용 해라. c..
최근댓글