일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- codility
- 다이나믹프로그래밍
- 영속성
- 쓰레드
- 백준
- 병행성
- 락
- 알고리즘
- Direct12
- 그리디 알고리즘
- 병행성 관련 오류
- 멀티프로세서
- 자료구조
- directx
- 타입 객체
- 다이나믹 프로그래밍
- 프로그래머스
- DirectX 12
- 운영체제
- 렌더링 파이프라인
- DirectX12
- 동적계획법
- 멀티쓰레드
- 그리디알고리즘
- 컨디션 변수
- I/O장치
- 디자인패턴
- 파일시스템 구현
- 스케줄링
- OS
- Today
- Total
목록C++ (11)
기록공간
객체 지향 프로그래밍 ( Object Oriented Programming ) 개요 객체 객체는 말 그대로 대상을 나타내는 단어이다. 예를 들면, 개인 한 명 한 명 또는 책 한 권 한 권을 객체라고 할 수 있다. 사람은 생김새와 성격이 똑같을 수 없기 때문에 개개인을 객체라고 할 수 있으며, 책 또한 내용이 같을지라도 한 권의 책에 흠집을 낸다고 해서 모든 책들이 전부 흠집 나는 것이 아니기 때문에 모두 객체라고 할 수 있다. 클래스 사람들은 일반적으로 같은 속성들을 가지고 있다. 여기서 속성이란 눈, 코, 입, 등의 신체부위를 의미한다. 책 또한 제목, 작가, 출판사 등의 같은 속성들을 가지고 있다. 사람, 책, 같은 객체들이 공통적으로 갖는 속성들을 모아서 정의 내린 것을 클래스라고 한다. (보통 ..

round 메서드는 라이브러리 내에 정의되어 있다. double round(double num); float round(float num); long double round(long double num); // template double round(T x); round는 인자로 들어온 값을 반올림해서 반환하는 메서드이다. 맨 밑의 경우처럼 템플릿 함수로 구현되어 있어 꼭 위 함수들의 변수형을 맞추지 않아도 된다. round 함수를 사용한 결과 값은 다음과 같다. round(3.2) ==> 3 round(3.7) ==> 4 round(-3.2) ==> -3 round(-3.7) ==> -4 위 예제를 코드로 표현하면 다음과 같다. #include #include using namespace std; in..

보통 문자열 입력을 받을때 입력 받는 문자열이 무엇인지를 띄워쓰기로 구분하였다. #include #include using namespace std; int main() { string a, b; cin >> a >> b; cout
C++은 유연한 언어이지만 안전한 언어는 아니다. 엉뚱한 메모리 참조나 비정상적인 연산(0으로 나누기)을 시도해도 컴파일러가 걸러주지 않는다. C++의 exception은 코드의 안정성을 한 단계 높이기 위해 언어 차원에서 제공하는 기능이다. exception에는 몇 가지 새로운 용어가 도입되었다. 특정 코드가 예외적인 상황을 인지하면 exception을 던진다(throw). 그리고 다른 코드가 던져진 exception을 받아서(catch) 필요한 처리를 한다. 다음은 0 나누기가 발생할 때 exception을 던지는 예제이다. #include double divideNumbers(double numerator, double denominator) { if(denominator == 0) { throw ..
이런저런 메모리 문제를 피하기 위해서는 기존 C언어 스타일의 일반 포인터 대신 스마트 포인터를 사용해야 한다. 스마트 포인터는 객체에 유효한 스코프가 더 이상 없을 때(함수의 리턴 등으로 스코프를 벗어날 때) 자동으로 메모리를 해제한다. C++ 스마트 포인터는 세 종류가 있다. std::unique_ptr, std::shared_tr, std::weak_ptr로 모두 헤더 파일에 정의되어 있다. unique_ptr은 보통의 포인터와 비슷하나 스코프를 벗어날 때 자동으로, 또는 명시적으로 delete가 수행될 때 메모리를 해제하는 것에 차이가 있다. unique_ptr을 이용하면 예외 상황이 발생하였을 때 메모리 해제를 단순하게 할 수 있다. unique_ptr은 객체뿐만 아니라 C 스타일 배열을 넣을 수..
decltype 키워드는 표현식을 인자로 받아서 그 표현식의 결과 타입이 무엇인지 알아낸다. 예를 들면 다음 코드에서 int x = 123; decltype(x) y = 456; 컴파일러는 x가 int 타입이라는 사실로부터 y의 타입을 int로 연역한다. 새로운 함수 문법에서 auto 키워드와 마찬가지로 decltype도 처음 볼 때는 어떤 효용이 있는지 잘 보이지 않는다. 하지만 템플릿 코드를 작성할 때는 auto와 decltype 키워드가 큰 역할을 한다.
C++14에서는 컴파일러가 리턴 타입을 자동으로 결정하게 할 수 있다. 이 기능을 사용하려면 리턴 타입에 auto 키워드를 사용하고 리턴 타입 지정을 생략한다. auto divideNumbers(double numerator, double denominator) { if(denominator == 0) {...} return numerator / denominator } 리턴 타입을 auto로 해두면 return 문의 표현식이 어떤 타입을 가지느냐에 따라 리턴 타입이 자동으로 결정된다. 함수 안에 return 문이 여럿 존재할 경우 모든 return 문의 표현식이 항상 같은 타입으로 결정될 수 있어야 한다. auto 리턴 타입은 재귀 함수에도 사용할 수 있으나 첫번째 return 문은 반드시 재귀 호출이..
C++11 부터는 리턴 타입이 함수 선언문 뒤에 따라오는 '새로운 함수 정의 문법'을 추가적으로 도입하고 있다. 이 문법은 리턴 타입을 함수 원형 뒷부분에 표기하는데, 보통의 경우에는 사용할 일이 없다. 하지만 템플릿 함수에는 매우 유용하다. 다음 예제는 새로운 함수 정의 문법을 따르고 있다. 함수 정의 앞에 오는 auto 키워드는 이 함수의 정의가 새로운 문법을 따른다는 것을 의미한다. auto func(int i) -> int { return i + 2; } 리턴 타입이 함수 앞에 오는 대신 ㅅ화살표 뒤에 지정되었다. 다음 코드를 보면 함수 정의 문법은 달라졌지만 함수 호출 방법은 기존과 동일하며, main() 함수도 새로운 문법으로 정의할 수 있다는 것을 알 수 있다. auto main() -> i..