개념 정리 1. 단축 평가 의미 구조 : 왼쪽평가후 오른쪽 평가 하는데, 왼쪽 평가가 거짓이면 오른쪽평가는 하지 않는다. 2. 함수 호출 의미 구조 : 매개변수는 다 평가 해야함 (단축 평가자체를 할수 없음) 두개의 개념을 알고 있어야 한다. 이유 1. && ||를 오버로딩 하면, 단축평가 메카니즘을 사용 할수 없어 효율이 떨어짐 2. , 오버로딩하며느 고유의 기능을 사용 할수 없게 됨 해결 방법 1. 원래 연산자처럼 동작하게 만들 수 없으므로, 오버로딩 하지말라. 개인적인 생각 1. 단축평가 메카니즘과 , 연산의 경우, 프로그래머가 어떻게 손써볼 방법이 없으므로, 고유의 동작 방식을 구현할수 없다고 이해 된다. 2. 단축 평가의 이점 단축 평가는 평가 도중 조건에 만족하지 않는다면 그 뒤의 평가를 전부..
책 정리/More Effective C++ 1판 검색 결과
부재 : 전위 연산자와 후위연산자의 특징을 이해하고, 전위 후위연산자 오버로딩 시 원칙을 지켜라. 이유 1. 알맞은 클래스 설계를 위해서 (사실 이 말 밖에 없다..) 해결방법 1. 전위 연산자와 후위연산자의 특징을 이해 해라.(밑의 코드를 이해 하면 .. 뭐 다 아는거다.) 2. 전위/후위 연산자를 오버로딩 할땐, 전위 연산자로 후위 연산자를 표현하는 원칙을 지킨다. (왜냐하면, 일반적인 규칙이기 때문이다) 3. 아리송할땐 객체가 int와 동일한 연산을 할수 있도록 정의해 준다. 코드 // 전위 연산자 작동 원리 : 0개의 임시객체를 만드는것을 알수 있다. template _T& operator++() { *this += 1; // 임시객체 생성 안함, 바로 연산처리함 return *this; // 레..
항목 5 : 사용자 정의 타입변환 함수에 대한 주의를 놓지 말자. 개념정리 매개변수(parameter)는 함수를 선언할 때 괄호 안에 명시하는 데이터 인자(argument)는 함수를 호출할 때 넘기는 데이터 사용자 정의 타입변환 함수는 operator char () 같은 함수를 말한다.(쉽게 생각해 형변환 연산자 오버로딩이다) 이유 1. 프로그래머의 의도와 달리 함수가 잘못 호출될 수 있다. 예)std::cout
항목 4 : 쓸데 없는 기본 생성자는 그냥 두지 말자. 개념 정리 1. 클래스 생성시 기본적으로 생성되는 함수들이 무엇이 있는지 알아야 한다. operator 까지! 2. 1번의 사항과 더블어 각각의 기본적인 상태도 알아야 한다. 이유 1. 기본 생성자가 없을 경우, 배열의 생성이나 new 연산을 사용 할수 없다. 2. 기본 생성자가 없을 경우, 템플릿 기반의 콘테이너를 사용 할수 없다. 해결방법 1. 쓸데없이 생성자 정의는 하지 마라. 2. 만약 기본 생성자가 없다면, 자신에 맞는 기본생성자를 만들어 주라. 주의점 1. 이 이야기는 기본 생성자가 다른 용도로 쓰일 때, 본래 목적의 기본생성자가 있어야 한다. 2. 배열 선언시나 new를 객체 배열들이거나 기본생성자 ()를 사용 한다는 점을 알고 있어야 ..
항목 3 : 배열과 다형성은 같은 수준으로 놓고 볼 것이 아니다. 개념정리 다형성 : 기본 클래스 객체의 포인터나 참조자를 통해서 파생 클래스 객체를 조작 하는 성질 public 상속의 쓰임 중 함수의 인자값이 기본클래스의 포인터나 레퍼런스일때 파생클래스도 받을수 있도록 해준다. 이유 1. 파생 클래스의 객체의 크기와 기본 클래스의 객체의 크기가 다르기 때문에, 포인터 계산(배열이니까!)시 오류가 발생한다! 해결방법 1. 배열의 포인터 계산과 다형성의 포인터 계산은 서로 다르다는 차이점을 숙지해라. 개인적인 생각 1. 이제부터 슬슬 기본 지식이 있어야지만 이해 할수 있는 수준이 나온다. 2. 이 차이점을 안다면, 코딩할 때 주의를 할수 있을것 같다.
항목 2 : 가능한 C++ 스타일의 캐스트를 즐겨 쓰자 개념 정리 1급 기피 대상 : goto 문, cast문(형변환) C++ 캐스팅 변환 사용 법 : http://ikpil.tistory.com/262 참조 이유 1. C스타일의 캐스트는 어떤 타입을 다른 타입으로 한방에 바꾸어 주는 괴물이다. 2. 눈으로 찾아 내기가 힘들다. 해결방법 1. 캐스팅 변환환을 쓸때는 C++ 스타일로 쓰자 주의점 1. 캐스팅 변환을 쓸때만 쓰는것이지 즐겨 쓰라는것이 아니다. 써야지만 할수 있을때 이렇게 쓰라는것이다. 2. 함수 포인터를 형변환은 목에 칼이 들어 올 경우가 아니라면 쓰지 말아라.(항목 31에서 자세하게 설명해준다고함) 개인적인 설명 캐스팅 변환 요약 static_cast : int를 double로.. 이런 류..
최근댓글