개요 지금까지 함수, 클래스 템플릿의 파라미터는 데이터형만 있는 것처럼 정리하였으나, 일반값도 있다. 이번 장은 데이터 형이 아닌 템플릿 파라미터란 무엇이고, 어떻게 사용하며, 주의해야 할 사항에 대해서 정리 되어 있다. 본문 데이터형이 아닌 템플릿 파라미터는 무엇인가? 상수로 평가되는 모든 값들이다. 하지만 예외적으로, 부동소수점(float, double) 상수와 문자열 상수(char *, wchar_t *)는 템플릿 파라미터로 사용 할 수 없다. 그래서 코드짜면 다음과 같이 코딩 할 수 있다. // 데이터형이 아닌 템플릿 파라미터 template class Stack { private: T elems[MAXSIZE]; }; 여기서 보듯이 첫번째 템플릿 파라미터는 데이터형이지만, 두번째 파라미터는 인트..
c++ 검색 결과
{ Pimpl ( 핌플 )은 무엇인가? 컴파일 방화벽이다. 컴파일 방화벽은 무엇이고 무엇을 위한 것인가? 방화벽은 벽이고, 이 벽은 컴파일러의 시야를 가려주기 위한 것이다. 컴파일러의 시야는 무엇인가? 정의부를 보는 시야이다. 정의부를 보는 시야는 무엇을 보는가? 각 함수의 구현내용, 변수의 사이즈, 클래스의 총 사이즈 등을 본다. 음, 잘 이해가 안간다. 그래서 어쩔 수 있는 건가? 1. 헤더 파일간의 의존성을 엄청나게 줄여 줄 수 있다. 2. 라이브러리의 인터페이스에 영향을 미치지 않고, 변수의 추가 삭제가 용이하다. 3. 좀 더 강력하게 더블 private을 이용 할 수 있다. (private 속의 private) 어떻게 사용 하는가? .. 링크 참조 그 동안 정리한 것도 있고, 인터넷에도 많고~ ..
{ 왜냐하면, 데이터 멤버는 변수이기 때문이다. 변수는 무엇인가? 변수는 특정 상태를 기록하기 위한 공간이다. 이게 무슨 상관인가? 특정한 상태를 기록 하는 공간이, 아무에게나 열려 있으면 어찌하겠는가? C++ 로써 예를 들자면, 이런 변수에 값을 변경하기 위해선 로직을 사용 한다. 이 로직들은 함수 형태를 띠는게 자연스럽다. 이런 함수들이 많아 질 수록, 변수는 많은 변화에 노출이 된다. 이때 노출의 정도를 그나마 줄일 수 있는 방법이 private 이다. 만약 public 으로 변수를 유지하게 된다면, 함수에게만 국한된 노출이 누구나 훔쳐 볼 수 있게 되는 것이다. 휴~ 비유를 들어야 직성이 풀리겠는가? 문 잠궈두고, 열쇠를 걸어 두어야 정녕 직성이 풀리겠는가? ㅋㅋ }
이번 항목은 C++의 문법 연습이라 할 수 있겠다. 기본적으로 C++ 컴파일러가 여러 기호들을 해석하는 규칙을 알아야 생각해 볼 수 있을 것이다. 컴파일러는 기본적으로 토큰을 최대한 길게 잡는다. 왜냐하면 이것은 보다 빠른 파싱의 기본 원리이기 때문이다. 만약 토큰을 최소 단위로 한다면, 파싱이 더 어려워져서 컴파일 타임이 정말 길어 질 것이다. 비유를 한다면, 책을 책장에 넣으려 할 때, 책을 크기 순으로 넣게 되면, 크기로도 책을 손 쉽게 찾을 수 있다. 물론 이름 순으로 정리해도 되고, 장르순으로도 정리해도 된다. ^^( 컴퓨터는 아무래도 크기 순이 더 편할 듯 하다. ) 1 ) 하나의 유효한 C++ 프로그램에서, 더하기 기호(+)가 연달아(중간에 빈칸 없이) 나올 수 있는 최대 개수는 몇개인가? ..
1 ) 메모리가 충분하지 않을 경우 표준 형태의 new들이 오류를 보고하는 두 가지 주된 방식들을 설명하라. 표준형태 하나는 std::bad_alloc 예외를 던지는 방법과, 예외를 던지지 않고, NULL을 리턴하는 방법, 이렇게 두가지가 있다. 2 ) 예외를 던지지 않는 nothrow 형태의 new가 좀더 예외에 안전한 코드를 작성하는 데 도움이 될까? 근거와 함께 답하라. 나는 도움이 된다고 생각한다. 왜냐하면, NULL 을 반환하게 되었을 때, 처리하지 않고, 지나가면 되기 때문이다. 하지만 이 근거를 곰곰히 생각해 보면, 필요한 메모리를 잡는게 오류가 났는데, 어떻게 정상적으로 프로그램이 구동 될 수 있겠냐는 오류를 범한 것이다. 이 NULL 이 반환하게 되었을 때, 곰곰히 생각해 보면, 나는 할..
이번 항목에선 여러 수준의 메모리 관리 개념과, 중요성을 프로그래머에게 알려 준다. 1 ) 메모리 관리자 또는 메모리 할당자는 무엇이며, 그 기본 기능은 무엇인가? C++의 주된 동적 메모리 관리 전략 두가지를 간략히 서술하라. 메모리 관리자(memory manager) 또는 메모리 할당자(memory allocator)는 무엇인가? 말 그대로, 메모리를 관리해 주거나, 할당해 주는 녀석이다. 이 녀석들의 기본 기능은 무엇인가? 메모리를 얻어와 주거나, 메모리를 없애 준다. 경우에 따라선 쓰지 않으면 없애주기도 한다. C++의 주된 동적 메모리 관리 전략 두가지는 무엇인가? 범용 할당(general-purpose allocation) : 요청된 크기 만큼 메모리를 할당하는 전략, 매우 범용 적으로 사용 ..
최근댓글