전체 글보기
![[C++ 1.2.5] 익셉션(exception(예외)), throw 구문, catch/try 구문](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpNlEw%2FbtrJO0pxzNi%2F3BfqklKa4eRqbX6kWm7MXK%2Fimg.png)
[C++ 1.2.5] 익셉션(exception(예외)), throw 구문, catch/try 구문
익셉션(예외)이란? C++은 유연성이 뛰어난 반면 안전성은 좋지 않다. 메모리 공간을 무작위로 접근하거나 0으로 나누는 연산을 수행하더라도 컴파일러는 가만히 수행한다. 이처럼 C++에 안전성을 좀 더 높이기 위해 제공하는 기능 중 하나가 익셉션(예외)이다. 익셉션이란 예상하지 못한 상황을 표현하는 클래스/객체이다. 예상하지 못한 상황에 대처하는 방법은 그 함수에서 nullptr이나 에러 코드와 같은 특수한 값을 리턴하는 것이다. 코드에서 특정한 조건을 만족해서 익셉션을 발생시키는 것을 익셉션을 던진다(발생시킨다)고 표현하고, throw 구문으로 작성한다. 또한 이렇게 발생한 익셉션을 대해 적절한 동작을 수행하는 것을 익셉션을 잡는다(받는다, 처리한다)고 표현하고, catch 구문으로 작성한다. throw..
[C++ 1.2.4] 레퍼런스, Const 레퍼런스
레퍼런스란? C++에서 제공하는 레퍼런스(참조)를 사용하면 기존 변수에 새 이름을 지정할 수 있다. int x = 42; int& xReference = x; 변수의 타입 뒤에 &를 붙이면 그 변수는 레퍼런스가 된다. 일반 변수와 같지만 내부적으로는 원본 변수에 대한 포인터로 취급한다. 일반 변수 x와 레퍼런스 변수 xReference는 모두 같은 값이다. 1. 레퍼런스 전달 방식 함수에 전달한 변수는 값 전달 방식으로 처리한다. 함수의 매개변수에 정수를 전달하면 함수 안에는 그 정수의 복제본이 전달된다. 그래서 함수 안에서 원본 변수의 값을 변경할 수 없다. C에서는 스택 변수에 대한 포인터를 자주 사용했는데, 이런 방식을 사용하면 다른 스택 프레임에 있는 원본 변수를 수정할 수 있다. 이러한 포인터를..
[C++ 1.2.3] Const의 다양한 용도
1. const 상수 const는 상수와 관련 있다. C 언어에서는 흔히 버전 번호처럼 프로그램을 실행하는 동안 변경하면 안 되는 값에 이름을 붙일 때 전처리 구문인 #define을 사용 했다. C++ 에서는 상수를 #define 대신 const로 정의한다. const로 상수를 정의하는 방법은 변수를 정의할 때와 거의 같고, 값이 변경되지 않도록 보장하는 작업은 컴파일러가 처리한다. const int versionNumberMajor = 2; const int versionNumberMinor = 1; const std::string productName = "Super Hyper Net Modulator"; 2. const 매개변수 C++에서는 non-const(const가 아닌) 변수를 const 변..
![[C++ 1.2.2] 스택과 힙, 포인터와 동적 메모리, 역참조, 배열 포인터, 널 포인터 상수(NULL), 스마트 포인터(unique_ptr, shared_ptr)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGXaWi%2FbtrJREE4tlc%2FXLpT7e2REjwvUWbbGP5rVk%2Fimg.png)
[C++ 1.2.2] 스택과 힙, 포인터와 동적 메모리, 역참조, 배열 포인터, 널 포인터 상수(NULL), 스마트 포인터(unique_ptr, shared_ptr)
1. 스택과 힙 C++ 애플리케이션에서 사용하는 메모리는 스택과 힙으로 나뉜다. 스택 스택은 제일 위에 놓인 프로그램의 현재 스코프를 표현하며, 주로 현재 실행 중인 함수를 가리킨다. 현재 실행 중인 함수에 선언된 변수는 모두 최상단 스택 프레임의 메모리 공간에 담겨있다. 현재 foo()라는 함수가 실행된 상태에서 bar()라는 다른 함수를 호출하면 최상단에 bar()라는 함수가 올라온다. 이를 스택 프레임이 올라온다고 한다. foo()에서 bar()로 전달되는 매개변수는 모두 foo()의 스택 프레임에서 bar()의 스택 프레임으로 복제된다. 다음은 두 개의 정숫값이 선언된 foo() 함수가 실행되는 동안의 스택 프레임 상태를 보여준다. 스택 프레임은 각각의 함수마다 독립적인 메모리 공간을 제공한다. ..
[C++ 1.2.1] C++의 스트링
C++의 스트링 C++에서 텍스트 스트링을 다루는 방법은 세 가지가 있다. 1. C처럼 스트링을 문자 배열로 표현하는 방법. 2. 스트링 타입으로 감싸서 표현하는 방법 3. 비표준 제네릭 크래스를 사용하는 방법 C++의 string 타입은 헤더 파일에 정의돼 있고, 기본 타입처럼 사용할 수 있다. string 타입은 I/O 스트림과 마찬가지로 std 네임스페이스에 속한다. 다음은 string을 문자 배열처럼 다루는 방법이다. string myString = "Hello, World!"; cout
[C++ 1.1.14] 반복문(while 문, do/while, for, 범위 기반 for 문)
1. while 문 while 문은 주어진 표현식이 true가 될 때까지 일정한 코드 블록을 계속해서 반복한다. int i = 0; while (i < 5) { std::cout