화요일, 목요일 2시간 동안 Basic반 수업을 듣는다.
문법 강의를 보면서 이해했다고 생각했는데 수업을 들으니까 제대로 이해했던 게 아니라는 생각이 강하게 들었다...
먼저 가장 기초인 함수는 이렇게 선언(정의)한다.
반환자료형 함수명(매개변수자료형 매개변수명)
{
return 반환값;
}
선언한 함수들은 main함수 안에서 호출한다.
int main()
{
int num = 7; // 자료형 변수명 = 값;
함수명(인자값); // <- 여기서 만들어놨던 함수들 호출(call)
}
C++ 안에서 기본구조는 대개 <자료형 변수명 = 값;> 이다.
이건 포인터(메모리 주소를 저장하는 변수)에서도 적용된다.
자료형* 변수명 = &메모리주소값;
Animal* animal = &메모리주소값;
Animal* myCat = new Animal();
pointer to Animal 타입의 animal이란 변수이다.
이렇게 포인터를 활용하면 포인터에 저장된 메모리 주소로 가면 된다.
📎 메모리의 구조

메모리 공간은 4가지로 나뉜다.
앞에 붙은 숫자가 커질수록 높은 주소이다.
speak()
{
cout << "멍" << endl;
}
//main.cpp
int Array01[10]; // Array01은 데이터 섹션 <- 함수 스코프 밖
void addAnimal()
{
int Array02[10]; // Array02는 스택 메모리 <- 함수 스코프 안
int* PtrToData = (int*)(malloc(sizeof(int), 7)); // 힙 메모리
// malloc : memory allocation
// 📌 PtrToData 변수는 스택에 있고 포인터에 저장된 주소는 힙에 있음
}
추상클래스는 인스턴스를 만들 수 없고 다른 클래스가 상속받아 필요한 메서드를 구현해야만 사용할 수 있다.
상속을 받은 자식 클래스는 추상클래스에서 정의한 추상 메서드들을 반드시 구현해야 한다.

가상 함수
순수 가상 함수