C++(56)
-
Inheritance
Child 클래스가 Mom 클래스를 상속한다. Child 클래스가 Mom 클래스를 상속하면 Child 클래스는 Mom 클래스가 지니고 있는 모든 멤버를 물려 받는다. class Mom { private: int age; //나이 string name; //이름 public: Mom(int age, string name) { this->age = age; this->name = name; } void ShowInfo() { cout
2022.04.03 -
Member Initializer
멤버 이니셜 라이저 선언과 동시에 초기화 시키는 것이 다. 아래는 멤버 이니셜 라이저 예제이다. #include #include using namespace std; class Person { private: string name; int salary; public: Person(string name, int money):salary(money) // salary를 선언 즉시 money로 초기화 { this->name = name; } }; int main(void) { return 0; }
2022.04.03 -
new와 delete
new와 delete를 이해하기 위해선 힙 메모리 할당 및 소멸에 필요한 함수인 malloc과 free에 대하여 알고 있어야 한다. 2022.04.03 - [C++] - malloc & free (int *)malloc(sizeof(int)*3); C언어의 동적할당에는 다음 두 가지 불편함이 존재한다. 1. 할당할 대상의 정보를 무조건 바이트 크기 단위로 전달해야 한다. sizeof() 2. 반환형이 void형 포인터이기 때문에 적절한 형 변환을 거쳐야 한다. (int *) 그런데 C++에서 제공하는 키워드 new와 delete를 사용하면 이런 불편함이 사라진다. new와 delete 사용방법은 다음과 같다. int 형 변수의 할당과 소멸 int *ptr1 = new int; delete ptr1; do..
2022.04.03 -
malloc & free
동적할당 malloc과 free에 대해 알아본다. 먼저 동적할당이란 프로그램 실행 중에 동적으로 메모리를 할당하는 것을 말한다. 메모리를 할당할때, 힙 영역에 할당한다. 중요한 점은 할당한 메모리는 free를 통해 꼭 해제해 주어야 한다. (그렇지 않는다면 메모리 누수가 발생한다. ) 동적 메모리 할당은 다음과 같다. (int *)malloc(sizeof(int)*4) 이는 아래 그림과 같이 힙 공간에 int타입 사이즈*4만큼의 메모리를 할당한 것이다. 이를 활용한 예시는 다음과 같다. #include using namespace std; int main(void) { int arr[4] = {1,2,3,4}; int *pArr; //int 타입 사이즈 *4 만큼의 메모리를 할당해라. pArr = (in..
2022.04.03 -
Reference
변수 = 할당된 메모리 공간에 붙여진 이름 할당된 하나의 메모리 공간에 둘 이상의 이름을 부여할 수는 없을까? 참조자는 자신이 참조하는 변수의 또다른 이름이다. 아래와 같이 1234값을 가진 변수 num1이 있다고 하자. 위와 같이 num1이라는 이름이 붙어있는 메모리 공간에는 num2라는 이름이 하나 붙게 된다. 참조자의 선언은 다음과 같다. int &num2=num1; 위의 문장을 실행하면 num2는 num1의 참조자가 된다. 아래와 같은 코드를 실행하면 아래의 그림과 같이 num1의 메모리 값이 변경된다. num2=8282; 참조자의 몇 가지 규칙 1. 참조자의 수에는 제한이 없으며, 참조자를 대상으로도 참조자를 선언할 수 있다. 2. 참조자는변수에 대해서만 선언 가능하고 선언됨과 동시에 누군가를 ..
2022.04.03 -
template
템플릿을 활용하여 c++에서 자료형을 마음대로 가지고 놀 수 있다. 구조체 -> 자료형을 사용자의 입맛대로 만드는 것. (구조체와 클래스는 거의 유사) 템플릿은 함수 템플릿과 클래스 템플릿으로 나눌 수 있다. 함수 템플릿 함수를 만들어 낼 때, 자료형을 정의하지 않고 두는 것. c++에서는 오버로딩에 의해 아래와 같이 함수의 이름과 내용이 같은 코드가 성립한다. int sum(int a, int b){ return a + b; } double sum(double a, double b){ return a + b; } 이는 매우 귀찮은 일이다. 같은 내용이더라도 전달받는 인자의 자료형이 달라지면, 새로 함수를 정의해야 한다 . 하지만 template을 사용하게 되면 아래와 같이 하나의 함수만 정의하면 된다 ..
2022.04.02