전체 글
[C++] 객체 지향 프로그래밍
객체 지향 프로그래밍 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. ▶ 객체: 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 절차적 프로그래밍 Procedure-Oriented Programming (POP) 프로시저 호출의 개념을 바탕으로 하고 있는 프로그래밍 패러다임의 일종 프로시저: 루틴, 하위프로그램, 서브루틴, 메서드, 함수라고도 하며, 수행되어야 할 연속적인 계산 과정을 포함한다. 프로그램의 아무 위치에서나 프로시..
[C++] 동적 메모리 할당
동적 메모리 할당 말 그대로 동적으로 메모리를 할당하는 것 메모리를 자유롭게 할당하고 해제할 수 있는 heap 공간을 이용한다. 자유롭게 할당할 수 있는 만큼 메모리 누수(memory leak)가 일어나지 않도록 해제를 꼭 제대로 해야함에 유의한다. 동적 메모리 할당하기 동적 메모리를 할당하기 위해 사용되는 키워드는 new와 delete이다. new는 동적 메모리를 할당하고, delete는 동적 메모리를 해제한다. 포인터에 동적 메모리 할당하기 포인터에 동적 메모리를 할당하는 방법은 다음과 같다. // 동적 메모리 할당 datatype* ptr = new datatype; // 동적 메모리 해제 delete ptr; Ex) 간단한 예제 #include using namespace std; int main..
[C++] 레퍼런스(참조자)
레퍼런스 C++에서 새로 등장한 기술로 특정 변수의 이름 대신 새로운 이름을 붙일 수 있다. 참조자라고 한다. &(앰퍼샌드) 기호를 이용한다. 레퍼런스를 이용하여 변수를 선언할 수 있으며 이를 참조형 변수라고 한다. 하나의 객체가 다른 객체를 연결하는 변수이며, 대입된 변수의 값과 주소를 그대로 가진다. 쉽게 말해서 다른 변수에 별명을 붙이는 변수라고 생각하자. 레퍼런스 변수 선언 레퍼런스 변수는 다음과 같이 선언한다. datatype &name = 변수명; int &p = a; Ex) 간단한 레퍼런스 변수 예제 #include using namespace std; int main() { int a = 10; int& p = a; cout
[C++] 매크로 / 인라인
매크로 컴파일러가 컴파일을 시작하기 전에 #define으로 정의된 상수를 매크로 확장 문자열로 변환하여 사용하는 것 프로그램의 가독성이 높아지고, 유지보수가 용이해진다. 매크로 확장 문자열에는 공백을 포함할 수 없다. #define은 전처리 과정에서 치환되므로 메모리 공간에 할당되지 않는다. ▶ 주소 접근이 불가능하다. 매크로 상수 매크로 상수는 다음과 같이 정의한다. #define 매크로이름 값 // 전처리기 문의 끝에는 ;(세미콜론)을 붙이지 않는다. 매크로 상수 예제 #include #define PI 3.14159 // 매크로 상수 정의 using namespace std; int main() { double radius = 5; cout
[C++] void 타입 / main 함수
void 타입 리턴값이 없는 타입 리턴값이 없는 함수 반환값이 굳이 필요없는 함수는 리턴값이 없는 타입인 void를 이용할 수 있다. Swap 함수 구현 #include using namespace std; void swap(int*, int*); int main() { int a = 3; int b = 7; cout
[C++] 변수 이해하기 (지역/전역/정적)
변수 변수(variable)란 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간을 의미 지역 변수 함수 내부에서 생성되는 변수 스택(Stack)에 저장되며, 선언된 함수 내에서만 사용된다. 함수가 종료되면 해당 변수는 소멸한다. { } 중괄호를 기준으로 하나의 지역(지역변수가 생존하는 영역)을 구분한다. 지역 변수 예제 #include using namespace std; int change_num() { int a = 10; return 0; } int main() { int a = 0; change_num(); cout
[C++] 열거형(Enum)
열거형 명명된 상수의 집합 열거자 이름들은 일반적으로 해당 언어의 상수 역할을 하는 식별자이다. 자주 사용하는 변수를 상수 처리할 때 유용하게 사용된다. ▶ 색을 칠하는 프로그램에서 "red"를 0, "yellow"를 1, "green"을 2과 같이 대응하여 사용 열거형 생성하기 열거형 정의 enum 열거형이름 { 변수명1, 변수명2, 변수명3, ... }; enum { 변수명1, 변수명2, 변수명3, ... }; // 열거형 이름 생략 가능 변수명1, 2, 3은 차례대로 정수값 0, 1, 2에 매칭된다. 열거한 변수명은 컴파일러에 의해서 매칭된 정수값으로 변환된다. enum { 변수명1 = 3, 변수명2, 변수명3, ... }; 위와 같이 정의하면 0이 아닌 3부터 값이 매칭된다. 변수명1 = 3, 변..
[C++] 공용체(Union)
공용체 멤버 변수끼리 같은 메모리 공간을 공유하는 형태 공용체의 각 멤버들의 메모리 시작 주소는 모두 동일하다. ▶ 각 멤버 변수의 변화가 다른 멤버 변수에 영향을 줌 반면, 구조체는 멤버 변수가 각각 다른 메모리 공간을 할당 받음 그다지 사용빈도가 높지 않은 기능 공용체 구현 struct 대신 union을 적으면 된다. union 공용체이름 { /*멤버들*/ int age; string name; }; 공용체 구현 예제 #include #include using namespace std; union uni { int a; char b; }; int main() { union uni A; A.a = 0x12345678; // 16진수 cout