본문 바로가기

카테고리 없음

Unreal 기초 C++ (5)(클래스)

이번에는 클래스에 대해 배울겁니다.

우리는 이제까지

 

변수 , 부호 쓰는법 , 함수 만들기 ,main의 존재를 알았습니다.

 

클래스는 

 

객체 지향 프로그래밍의 핵심 요소로, 데이터와 동작을 캡슐화!!하여 

코드의 재사용성과 유지보수성을 향상시킵니다.

 

우리는 c++파일을 (cpp , h) 한개의 클래스로 보면 좋습니다. 

main()은 한곳입니다. 즉 코드를 실행 시키는곳은 한곳이에요

 

그런데 main위에 함수가 여러개고 변수가 여러개고 예시에서는 적었지만

갑자기 극단적으로 int 변수가 100개가 넘는다고 합시다 사실 극단적도 아닐거에요

함수도 50개 정도 추가해줍시다

 

아마도 코드의 줄이 500줄 넘어서 읽기 싫어질정도로 많아질겁니다.

 

그걸!!

 

클래스는  좀 덜어주는 역할을 할 수있어요

 

예시)

 

파일명 : A.h

 

class A {

public : 

int a;

 

void B(){

std::cout<< "클래스 A의 B함수실행 " << std::endl;

};

}

 

이렇게 만들었습니다. 이건 h파일 (헤더파일)에 적어줄거에요 h와 cpp파일은 나중에 알려드릴게요

 

우리는 클래스 A를 만들었습니다.

 

이러면 우리는 main에 따로 int a 를 둘필요도없습니다.

 

파일 명 : Main.cpp

 

#include "A.h"

 

int main(){

A a;

 

a.B();

 

//포인터라고 하는데 나중에 배울거에요

//A* aa = new A();

 

//이것도 포인터로 불러오는건데 나중에 알려드릴게요

//aa->B();

 

return 0;

}

 

아 맞아 코드앞에 //이거는 해당코드를 무시하는 코드에요 즉 해당 코드를 실행시키지않는답니다. 

그래서 //하고 한글을 써도 코드 오류가 나지않아요

 

이렇게 하면 우리는 main함수가 있는 스크립트 안에 함수가 없습니다.

다른 스크립트에요 그러면 어떻게 부를 수있냐?

#include "A.h"

이거 보이세요? 이거로 불러올수있답니다.

뜻은 A.h스크립트 내용을 불러온다고 보면 됩니다.

 

"A a;이건 뭔가요?"

이건 생성해주는겁니다 변수 선언하듯이 (int a)이렇게 툭하고 던져줘요

그러면 a는 A클래스입니다.

 

아래 보면 포인터라고 보이시죠? 

이것을 통해서도 만들 수있는데 저장되는 메모리 방식이 다른겁니다. 

지금 배우기에는 아직 어려우니 이런게 있다고 알아 두세요.

 

그러고 함수를 실행시키려면 

a.B();

함수 앞에 클래스 이름을 붙여주면 됩니다. 그사이 "."잊지마세요

그러면 함수를 실행시킬 수 있습니다.

 

또 클래스 안에 변수가 있죠?

 

그건 클래스 안에 변수를 넣었다는거죠

불러올 수있습니다.

 

a.a = 5;

 

이렇게 하면 a안에 int a는 5의 값을 받는겁니다 즉 

 

변수랑 함수를 저장하는 공간이 클래스라 보면 편해요

 

그런데 class 안에

public:

이게 뭘까요?

이건 해당 클래스에 있는 내용을 다른 곳에서 호출 할 수있는 놈들만 보낸다는 겁니다.

즉 보내기 싫으면 public 에 두면 안됩니다.

 

public , protected , private 이렇게 3가지가 있는데 이걸 "접근 제한자"라고 합니다.

 

public : 다른 클래스에서 꺼낼 수있습니다.

protected: 이건 다른 클래스는 꺼낼수없습니다. 그런데!! 아직 배우지 않은 상속 받은 클래스들은 사용할 수있어요

private : 이건 그 어떤 다른클래스들은 꺼낼 수 없게 한거에요.

즉 우리가 다른 클래스가 못건들게 하려면

 

class A {

public : 

int a; 

private :

int b;

}

 

이렇게하면 a는 호출됩니다 하지만 b는 호출되지않아요

 

A a;

a.a; // O

a.b; // X 빨간줄이 아래 생길거에요

 

이렇게 클래스를 간단하게 알아봤습니다.