카테고리 없음
프로그래밍 C++ (3)
김프로722
2024. 5. 22. 17:23
반응형
동적 할당과 객체복사
-> 동적할당이란 실행할때 몇개인지 알고 거기에 해당하는 만큼 메모리를 할당!
- 동적할당은 배열의 동적할당에서 많이 사용한다
- 정적할당 -> int a= 5
- 동적할당 -> int *a = new int(5)




a를 포인터로 만들었고 int(5) 앞에는 new라는 키워드가 붙였다
위 설명은 메모리상에 int를 담는 공간 하나가 동적으로 만들어지고 거기에 5라는 값이 들어간다 공간이 만들어졌고 거기에 값이 들어가는 것까지 되었다 그리고 새로운 만들어진 공간의 주솟값이 리턴한다
동적할당의 접근은
cout<< *a <<endl;
*a = 10; // a가 의미하는 것은 a가 가르키는 공간
동적할당이 모두 끝나면 반드시 해제해야한다. 해제하지 않으면 나중에 새로운 메모리 공간이 필요할때 그 공간을 다시 쓰지 못하게 되므로 메모리 낭비가 일어난다. 모든 동적 할당된 메모리는 반드시 해제되어야하고 반드시 한번만 해제되어야한다

-> 위와 같이 delete 를 해준다
※배열의 동적할당
다음으로는 아까 말했다시피 동적할당은 배열에서가 가장 중요하다!!!!!!!!


- 배열도 마찬가지로 동적할당을 할 수 있다.
- int *arr = new int [10];
- 첫번쨰 칸의 주솟값이 리턴되어 돌아간다 (주의 : arr은 배열 포인터가 아니라 int 하나를 가리키는 포인터라는 점)
- 동적 할당된 배열의 칸수에는 변수를 넣을 수 있다는 점
- 배열 메모리를 해제할때는 아까와 다르게 delete[]을 붙어야한다
※깊은 복사와 얕은 복사


- 얕은 복사의 경우 주솟값만 복사되는 것을 볼 수 있고 깊은 복사의 경우 동적할당이 두번 일어난 것을 볼 수 있음
※상속 :
- 상속이란 어떤 클래스이 멤버를 다른 클래스에 물려주는 것을 말한다
- 이때 멤버를 물려주는 클래스는 부모클래스
- 물려 받은 클래스는 자식 클래스
- 상속이 일어나면 부모클래스의 멤버들을 자식 클래스도 가지게 된다.
- 또한 자식클래스는 자기 고유의 멤버를 더 가질 수 도
상속과 접근 제어
- public은 클래스 외부에서 접근가능하고 자식클래스에서도 접근 가능하며 클래스내부에서도 접근가능했다
- private은 클래스 외부에서 접근 불가능하고 자식클래스에서도 불가능하고 클래스내부에서는 접근 가능했다
- protected 은 새롭게 나오는 것인데 클래스 외부에서 접근이 불가능하고 자식클래스에서는 접근 가능하며 클래스 내부에서도 접근가능하다



상속안에서 생성자와 소멸자
-> 상속을 하게 된다면 상속안에서 생성자와 소멸자의 구분이 복잡해지게 된다 하지만 이때는 부모클래스 자식클래스 모두 생성자와 소멸자가 있다면 상속해준 부모클래스이 생성자가 먼저 실행되고 자식클래스의 생성자가 실행되게 된다

반응형