이유 1. 내부 영역에서의 변수명이나 함수명은, 외부 영역의 동일한 이름을 감춘다. 2. 감춤으로써 확장성이 떨어지기 때문이다. 해결방법 두가지 1. 클래스에 정의되어 있는 오버로딩된 operator new를 선언할 때 정상형식을 갖춘 operator new를 만들어 둔다. (참조. 이때 클래스에 정의된 operator new를 쓸때는 매개변수를 오버로딩에 맞춘다. 이것도 기초 문법이다) 2008/07/02 14:53 수정 2. 클래스에 정의되어 있는 오버로딩된 operator new의 매개변수를 디폴트값을 넣어, 분기 시켜라 (개인적으로 이 방법이 편하다고 생각된다) 2. 오버로딩된 매게변수에 따라 분기 시키는 방법과 using 키워드를 이용하여, 이름을 가리지 않도록 한다. 덧붙여 어느 방법이건 간에..
new 검색 결과
해당 글 8건
항목 9. new의 "정상"형식을 감추지 않는다.
책 정리/Effective C++ 2판
2008. 5. 7. 08:10
항목 8. operator new와 operator delete 작성시 관례를 따른다.
이유에 앞서, C++ operator new 와 operator delete의 관례란? 1. 올바른 인자값을 가져야 한다. 2. 메모리가 충분하지 않을때 에러처리 함수를 호출해야 한다. 즉, 사용 가능한 메모리가 없을 때 요구에 대처해야 한다. 이유 1. 부모 클래스에 선언한 operator new(new[])를 상속 받은 자식 클래스는 부모클래스의 new를 호출한다. (이때 오버라이딩은 되지 않는다. 문법 기초다. 그래서 오버로딩을 해서 쓰는데, 역시 오버로딩의 한계가있다) 하지만 대개 자식 클래스는 부모클래스보다 메모리를 더 많이 차지하므로, 자식클래스의 메모리 할당시 부모클래스의 용량(메모리)로 잡을수도 없는 노릇이다. 부모클래스의 용량을 포함하는 자식클래스의 용량의 할당이 올바른 반환값이다. 한마..
책 정리/Effective C++ 2판
2008. 5. 7. 07:56
최근댓글