일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- leetcode 819
- leetcode 5
- leetcode 937
- leetcode 234
- leetcode 561
- airflow docker
- 머신러닝
- leetcode
- webcrawler
- ctf-d
- leetcode 49
- 스파크 완벽 가이드
- 배열
- Hadoop
- leetcode 15
- docker로 airflow 설치하기
- Hortonworks Sandbox
- leetcode125
- 올바른 변수명 짓기
- 빅데이터를 지탱하는 기술
- 블로그 이전했어요
- leetcode 344
- 컴퓨터구조
- leetcode 121
- wargame.kr
- Python
- 데이터레이크와 데이터웨어하우스
- leetcode 238
- MapReduce 실습
- 문자열 조작
- Today
- Total
목록Programming/C++ (6)
HyeM
More Effective C++의 항목 16에서 20까지를 문서화함.
More Effective C++의 항목 16에서 20까지를 문서화 한 파일이다.
항목 14 : 예외지정 기능은 냉철하게 사용하자 예외지정 : Java처럼 그 함수가 발생시킬 예외를 미리 지정하는 기능 > 장점 1. 코드보기 수월 2. 예외사용을 적절히 제약해줌 예외지정에 일관성이 없으면 컴파일러가 컴파일 도중에 발견해 줌. > 단점 - 함수가 예외 지정 리스트에 없는 예외를 발생시킬 경우, 런타임 에러가 발생하면서 unexpected라는 특수함수가 자동으로 호출됨 -> 결국, 프로그램이 멈추고, 활성 스택 프레임에 만들어진 지역변수는 없어지지 않는다. * unexpected 함수는 terminate를 호출하여, 멈춰버린다. - 다른 호출 측 함수에서 예외처리 코드가 준비된 상황에서조차도 unexpected가 호출될 수 있다. 예외 지정 불일치 피하기 방법 1. ( 보통 타입 인자를 ..
항목 13 : 발생한 예외는 참조자로 받아내자 catch문 작성시, 예외객체가 전달되는 방식 1 포인터 2 값 3 참조자에 의한 전달(예외받기) TIP! : 문제점 : 해결점 1. 포인터 예외를 포인터로 발생시, 객체의 복사 X 위의 코드는 완벽하지 않다. 프로그램 흐름이 떠나더라도, 예외 객체가 그대로 남아 있을 수 있는 방법이 필요하다. 이에 대한 대안은 힙 객체를 새로 만들고, 그 객체의 포인터를 예외로 발생시킨다. 이로써 위의 문제는 해결되지만, catch문으로 들어온 포인터를 삭제하느냐 마느냐의 문제가 생긴다. 만약 예외객체가 원래부터 힙에 할당되지 않은 것이면, 메모리 해제를 해선 안된다. 하지만 이를 알 수 있는 방법이 없으므로, 이런 경우는 피하는 것이 좋다. 또한 '포인터에 의한 예외잡기..
예외(Exceptions) 서론 예 항목 9 : 리소스 누수를 피하는 방법의 정공은 소멸자이다 readALA는 호출될 때마다 힙 객체를 새로 생성함 만약 ) pa->processAdoption 예외발생시에는? (processAdoptions함수는 예외처리를 못하도록 되어있음) 1. 발생한 예외는 processAdoption을 호출한 함수에 전파됨 2. 이때, processAdoptions의 코드는 모두 실행되지 않은채 지나감=> pa는 절대로 delete되지 않음! => 이로인해 processAdoptions는 리소스 누수를 일으키는 함수가 됨 해결책 1. try-catch블록 이용 더보기 Q. try-catch문이란? -예외처리구문 try //실행될 코드가 들어감 { //수행할 코드 } catch(받아..
More Effective C++ 목차 CHAPTER 1_ 기본 개념들 항목1 . 포인터(pointer)와 참조자(reference)를 구분하자. 항목2 . 가능한 C++ 스타일의 캐스트를 즐겨 쓰자. 항목3 . 배열과 다형성을 같은 수준으로 놓고 볼 것이 아니다. 항목4 . 쓸데 없는 기본 생성자는 그냥 두지 말자. CHAPTER 2_ 연산자 항목5 . 사용자 정의 타입변환 함수에 대한 주의를 놓지 말자 항목6 . 증가 및 감소 연산자의 전위/후위 형태를 반드시 구분하자 항목7 . &&, ||, 혹은 . 연산자는 오버로딩 대상이 절대로 아니다 항목8 . new와 delete의 의미를 정확히 구분하고 이해하자 CHAPTER 1_ 기본개념들 항목1 . 포인터(pointer)와 참조자(reference)를 ..