동적할당
동적할당
new
- c언어의 malloc 과 같은 기능을 하는 c++ 의 함수라고 보면된다.
- 단 malloc 과 다른점은 객체를 동적으로 생성하면서 동시에 생성자를 호출한다는 특징있음.
사용법
T* pointer = new T[size];
예시
std::cin >> arr_size; int *list = new int[arr_size];
Delete
delete[] list;
이렇게 사용해주면 지워진다.
오직 new 로 만든 공간만 delete 를 사용할 수 있다.
객체지향 프로그래밍
프로그래밍의 역사
프로그래밍의 역사
- 1세대 (ENIAC) : 진공관을 조작해서 코딩함. 수정하기 위해서는 19000개에 다라는 진공관을 확인했어야 함
- 2세대 (Assembly languege) : 컴퓨터 내장 메모리가 생기고 실직적 프로그래밍을 할수 있고자 등장했다. - 기계어(0,1)에 문자열을 대응시킨 것이다.
- 3세대 (절차지향언어) : 파스칼과 C언어가 등장했다. - 함수의 개념 생성, 자료형이 정립되었다.
- 4세대 (객체지향언어) : c++, java, python, c#등 90년대 이후 생긴 언어 대부분은 객체지향 언어이다.
단 C++은 멀티 페러다임 언어이다.
객체란 무엇인가
객체란 무엇인가
그동안 우리는 play(animal_list[play_with]);
이런 식으로 Play
가 Animal
을 한다! 사용해왔다.
우리는 animal 이 play 한다 즉 객체가 중심으로 코드를 작성하는 걸 객체 지향 프로그래밍이라고 부를 것이다.
객체 : 객체란, 변수들과 참고 자료들로 이루어진 소프트웨어 덩어리 이다.
추상화(abstraction) :객체가 현실 세계에서의 존재하는 것들을 나타내기 위한 과정
http://journals.ecs.soton.ac.uk/java/tutorial/java/objects/object.html 에서 인용
인스턴스 변수(instance variable), 인스턴스 메소드(instance method) :객체의 변수나 함수들
캡슐화(Encapsulation) : 외부에서 직접 인스턴스 변수의 값을 바꿀 수 없고 항상 인스턴스 메소드를 통해서 간접적으로 조절하는 것
캡슐화의 장점 : 객체가 내부적으로 어떻게 작동하는지 몰라도 사용할 줄 알게 된다
클래스란 무엇인가
클래스란 무엇인가
class : c++에서 객체를 만드는 설계도이다.
인스턴스(instance) : C++ 에서 클래스를 이용해 만들어진 객체
접근지시자
private : 멤버 메소드를 통해서만 접근이 가능하다.
protected : 멤버 메소드와 상속받은 클래스에서 접근 가능하다.
public : 아무곳에서나 접근 가능하다.
예시코드
class animal {// 클래스 이름 private: int food; int weight;// 아무 멤버변수 넣어도 된다. public: void set_animal(int _food, int _weight) { food = _food; weight = _weight; } void increase_food(int inc) { food += inc; weight += (inc / 3); } void view_stat() { std::cout << "이 동물의 food : " << food << std::endl; std::cout << "이 동물의 weight : " << weight << std::endl; } };
키워드를 명시하지 않으면 기본적으로 private로 설정이 된다.
멤버변수 역시 public으로 선언가능하나, 퍼블릭을 남용하게 되면 캡슐화가 잘 되지 않은 코드이므로 지양해야한다.
클래스 인스턴스 생성 : data day;
메소드 사용 : day.ShowDate();
참고 자료
Uploaded by N2T
'CPP' 카테고리의 다른 글
[c++개념공부]함수 오버로딩, 생성자, default (0) | 2023.01.27 |
---|---|
[c++개념공부]참조자와 이름공간 (0) | 2023.01.27 |
[c++개념공부] 생성자 초기화리스트, static 변수 함수, 레퍼런스 리턴 함수, this (0) | 2023.01.27 |
[c++개념공부]참조자 (2) | 2023.01.27 |
[CPP함수 사용법]setfill 함수와 setw함수 사용법 (0) | 2023.01.15 |