항목 29. 내부 데이터에 대한 "핸들"을 리턴하는 것을 피해라 우선 핸들이란? 1. C++에선 포인터나 레퍼런스를 말한다.(참조자를 뜻한다.) 다시 본론으로.. 이유 1. 내부 데이터는 안정성을 보장하지 못한다. 해결 방법 1. .. 사용하지 마라! 이건 절대다! 2008/06/28 03:25 추가 해결방법 1의 경우, 절대 사용하지 않기보단 상황을 봐가면서 해야 한다고 다시 생각이 든다. 예를 들자면, .. 내부 데이터 객체가 20Byte가 넘는데 이녀석을 임시객체로 반환하기 보다는 상수성이 있는 핸들로 받아 온다면 충분히 성능 향상이 있기 때문이다.(.. 뭐 성능 향상은 알고리즘 개선 더 크겠지만;) 참조 1. 왜냐하면 내부 데이터는 리턴되고 나서 ;
const 검색 결과
항목 21. 가능한 const를 이용한다. 이유 1. 여러 상황속에서 내가 정의한 데이터가 아무렇게나 변경 될수 있다. - 포인터, 레퍼런스로써 가리킨 데이터가 private인경우에도 변경되는 경우와 마찬가지다. 2. operator 의 반환값이 const 가 아닐경우 a * b = c 와 같은 경우 무슨일은 한거같은 느낌만 들기 때문이다.(실험해 보면 재미잇다) 해결 방법 1. const 키워드를 넣을수 있는 곳에는 주저말고 넣자. 2. 포인터로 값을 전달하게 될때는 이중 const로 묶어 놓자. 참조 사항 1. 내부 함수가 레퍼런스로 값을 반환해줄경우 private에 있는것도 접근이 가능해진다. 2. 1번의 사항은 포인터도 마찬가지다. 그러므로 이럴때 const를 사용 하면 좋다. 더 좋은것은 설계를..
항목 12. 생성자에서 치환보다는 초기화를 사용한다. 이유. 2008/05/31 12:57 수정 1. const와 레퍼런스 멤버들을 초기화 할 수 없다, 1. const 멤버 객체와 와 레퍼런스 멤버 객체는 초기화 순간에만 초기화를 할수 있다. 2. 초기화 보다 연산이 한단계 더 많아 진다. 2. 대입연산자(치환)은 이미 초기화 순서를 지나친것이기 때문에 1단계 많은 연산을 하게 되는것이다. 참조 1 클래스의 생성은 이 두단계를 거친다. 첫번째. 데이터 멤버의 초기화 두번째. 호출된 생성자의 코드가 실행된다. 2. const와 레퍼런스는 항상 생성자 초기화에서만 할수 있다. 3. 클래스내부에선 정적상수만이 초기화 할수 있다 해결 방법 1. 대입연산자 보다는 멤버초기화 리스트 구역을 사용 한다. 주의점 1..
최근댓글