예외 처리 프로그램 실행 중에는 예기치 못한 오류가 발생될 일이 많이 생긴다. 이는 프로세스 내부만이 아닌 외부로 부터의 입/출력 혹은 제어 신호에 의해 발생할 수 도 있다. 예로 파일을 열려할 때, 권한 문제로 거부를 당하거나, 함수에 잘못된 인수가 들어오고, 컨테이너 크기보다 더욱 방대한 데이터가 입력되는 경우를 예로 들 수 있다. 이런 경우 런타임 에러를 피하고 프로그램을 안전하게 종료시키기 위하여 올바른 정보로 재수행을 재시도하거나, 입력을 다시 받는 등의 적절한 예외 처리를 하여야 한다. 간단한 예외 처리 팩토리얼 오류 발생 #include using namespace std; int fact(int n) { if (n == 1) return 1; return n * fact(n - 1); ) ..
이동 시맨틱 (Moving Semantics) 깊은 복사와 얕은 복사의 개념을 먼저 공부하면, 이동 시맨틱이라는 개념을 알아볼 수 있다. 우선 깊은 복사란, 하나의 변수 값을 다른 변수에 완벽히 복제하여 두 변수가 독립적인 형태로 메모리에 할당되는 것이다. 얕은 복사란, 하나의 변수 값을 가르키는 주소 값을 다른 변수도 동일하게 가지게되어 두 변수가 동일한 메모리 영역을 가리키게 되는 것이다. 이동 시맨틱은 객체의 소유권을 다른 객체로 옮기는 방법이며, 불필요한 데이터 복사를 피하고 성능을 향상 시킨다. 그러면 다음 예제를 보자. 이중 깊은 복수 class MyString { public: char* getName() { string name = "Hong"; return name; } }; int ma..
객체지향의 문제점 다중 상속 (Multiple Inheritance) 다중 상속은 직계 부모 클래스를 하나 이상 가지는 클래스를 의미한다. 단일 상속과 마찬가지로 접근 제어자를 통한 상속 모드를 설정할 수 있고 프로그래머에게 새로운 문제를 안겨 준다. 두 개의 별개 부모 클래스로부터 이름은 같지만 서로 다른 메서드를 상속하는 문제 둘 이상의 서로 관련된 인접 부모 클래스를 상속 받는다면 사용할 메서드가 모호해지는 문제 다중 상속 #include using namespace std; class Human { public: Human() { cout
오버라이딩(Overriding) 동일한 이름의 함수를 설정하라 오버라이딩(Overriding)은 오버로딩(Overloading)과 비슷한 이름을 가졌지만 엄연히 다른 개념이다. 오버로딩은 같은 이름의 함수를 여러 개 만드는 것이고, 오버라이딩은 하나의 가상 함수를 상속 받아 동일한 함수의 내용을 사용하거나 아이에 다르게 사용할 수 있는 방법이다. 오버라이딩이 없다면 상속의 확장성의 폭은 굉장히 좁혀졌을 것이다. 멤버 재정의와 정적 바인딩 이번 학습 단원에서는 정적 바인딩이 상속 관계에서 어떻게 동작하고, 부모와 자식간 참조 범위에 어떻게 관여하는지 연관성을 알아 볼 수 있다. 들어가기전, 조금 맛보기를 한다면 정적 바인딩은 컴파일 시간에 변수와 함수의 크기를 할당하며 이를 통해 각 변수와 함수가 독립된 ..
상속의 필요성상속은 복잡하면서도 간단한 개념이다. 잘짜여진 상속 계층을 구현한다면 코드는 간결하고 안전한 캡슐화를 통해 더욱 유지보수 및 확장성을 확보할 수 있다. 이러한 상속의 여러 사용 방법중 하나를 알아보자. 이번 학습은 메신저 앱에 지원되는 메시지라는 부모 클래스와 텍스트를 답는 TextMessage와 이미지를 담는 ImageMessage라는 파생 클래스로 표현하겠다. 각 클래스는 다음과 같이 선언되어있다. 텍스트 메시지 클래스class TextMessage { public: TextMessage(int sendTime, const string& sendName, const string& text) : sendTime(sendTime), sendName(sendName), text(text) {}..
- Total
- Today
- Yesterday
- 수학
- New
- 알고리즘
- CPU
- 구조
- 메모리
- const
- 인터럽트
- static_cast
- 상속
- 운영체제
- 프로세스
- 레지스터
- 클래스
- 크기
- 명령어
- 스레드
- thread
- malloc
- 포인터
- 게임수학
- 백준
- 함수
- c++
- 할당
- dynamic_cast
- 초기화
- 입출력
- 컴파일
- 멀티스레드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |