CPP/씹어먹는 c++

[c++개념공부]동적할당과 class

뜨거운 개발자 2023. 1. 27. 19:25
💻

동적할당

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. 1세대 (ENIAC) : 진공관을 조작해서 코딩함. 수정하기 위해서는 19000개에 다라는 진공관을 확인했어야 함
  1. 2세대 (Assembly languege) : 컴퓨터 내장 메모리가 생기고 실직적 프로그래밍을 할수 있고자 등장했다. - 기계어(0,1)에 문자열을 대응시킨 것이다.
  1. 3세대 (절차지향언어) : 파스칼과 C언어가 등장했다. - 함수의 개념 생성, 자료형이 정립되었다.
  1. 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();

참고 자료

https://modoocode.com/172


Uploaded by N2T

728x90