분류 전체보기 49

[C++] 참조자가 객체로 쓰였을 때는?

int main(void) { SelfRef obj(3); SelfRef &ref=obj.Adder(2); obj.ShowTwoNumber(); ref.ShowTwoNumber(); ref.Adder(1).ShowTwoNumber().Adder(2).ShowTwoNumber(); return 0; } 이러한 코드가 있을 때, ref는 객체일까? 아니면 그냥 객체가 아닌 참조자일까? -> 참조자의 의미를 잘 생각해보시면 될 것 같다. 결국 참조자 &를 사용하면 한 공간에 다른 별명을 붙이게 되는 것이다. 결국 ref도 객체로 보는 것이 맞다. 참조자를 썼다고 객체와 참조자를 따로 구분짓지는 않는다. (아래는 전체코드이다..) //참고. 전체 코드 #include using namespace std; cla..

언어/C++ 2023.09.25

[C++] *this가 반환 값일 때, 함수의 반환형에 &를 쓰는 이유 (+ this와 *this의 차이)

*this가 반환값으로 나오는 경우가 있는데, 그럴 때는 함수를 선언할 때 어떻게 함수의 반환형을 써주어야 하는걸까? (참고로 this에 *이 붙는 이유는 *이 붙지않으면 this의 주소값이 나오기 때문이다. this의 값을 나오게 하고 싶으면 this 앞에 *을 써주어야 한다. 즉, this는 자기 자신의 주소값이고, *this는 자기자신의 값이다.) 밑에 두 코드를 보면, 모두 *this가 반환값으로 나오는 경우에는 함수의 반환형에 &를 붙인다는 것을 알 수 있다. const Book& Book::ThickerBook(const Book& comp_book) { if (comp_book.total_page_ > total_page_) { return comp_book; } else { return *..

언어/C++ 2023.09.24

[Unreal Engine 5] 5. 액터(오브젝트) 추가, 이동, 배치, 복사

씬은 액터라 불리는 다양한 오브젝트들로 구성되는데, 레벨(뷰포트 화면)에 있는 것이 전부 액터들이다. 1. 액터 추가 정육면체플러스 버튼을 클릭하면 PLACE ACTORS라는 부분에, 레벨에 배치할 수 있는 다양한 액터들이 있다. 원하는 액터를 드래그해서 원하는 곳에 놓아주면 된다. 2. 오브젝트 이동, 배치 , 크기 조정 (feat. 기즈모) 기즈모 (gizmo) : 세 개의 기본 축으로 뻗어 나가는 화살표 에디터에서 레벨에 배치된 액터를 선택하면 선택한 액터 중심에 기즈모(Gizmo)가 출력된다. 해당 기즈모를 통해 위치, 크기, 회전 등을 조절할 수 있다. 이것으로 물건을 드래그해서 원하는 곳에 이동 시킬 수 있다. 아래 사진의 첫 번째 기즈모 안의 사각형을 선택하면 화살표 2개를 선택할 수 있다...

Unreal 2023.09.23

[Unreal Engine 5] 3. 뷰포트 viewport 탐색하기(화면 이동), 화면 퀄리티 조정, 화면 이동 속도 조정

뷰포트란 게임에서 플레이어가 돌아다닐 수 있는 공간인 레벨을 볼 수 있는 화면이다. 언리얼에서는 현재 열린 레벨의 미리보기를 3D로 제공한다. (뷰포트(viewport)는 현재 보고 있는 컴퓨터 화면의 영역을 나타낸다.) 맵을 빌드하고 월드를 생성하기 위해 이동하는 법을 알아보자. 마우스 오른쪽 버튼을 누른 상태에서는 화면이 회전되면서 주변을 둘러볼 수가 있다. 마우스 오른쪽 버튼을 누른 상태에서 WASD키를 누르면 화면 이동이 가능하다. 마우스 오른쪽 버튼을 누른 상태에서 Q키를 누르면 하강하고 E키를 누르면 상승한다. 마우스 가운데 휠 버튼을 누르면 회전한다. 마우스 왼쪽 버튼을 누르면 위아래 이동 없이 화면을 이동할 수 있다. 맨 위의 툴바에서 초록색 화살표 버튼을 누르면 레벨이 실행된다. 레벨을 ..

Unreal 2023.09.23

[Unreal Engine 5] 1. 언리얼 설치 및 실행 방법

1.언리얼 엔진 사이트 방문 https://www.unrealengine.com/ko/feed 2.위 화면의 오른쪽 위에 있는 파란 다운로드 버튼 클릭 3. 런처 다운로드 클릭 (만약 publishing license와 creators license 선택 창이 뜬다면, 게임배포를 위해서는 publishing license를 선택하는 것이 좋다.) 4. 에픽게임즈런처 실행 (실행 전 로그인을 하라고 하면 로그인 및 회원가입 진행) 5. 에픽게임즈 런처에서 왼쪽의 언리얼 엔진을 누른 후 라이브러리로 간다. 6. 엔진 버전 + 에서 노란색 + 버튼을 누른 후 가장 최신 버전으로 다운받아주면 된다. 7. 그 후 실행 버튼을 눌러주면 된다. 8. GAMES에서 3인칭으로 할 것이기에 third map을 선택한다...

Unreal 2023.09.23

[C++] 동적 할당(dynamic allocation)

C++에서는 new 연산자를 이용하여 메모리의 동적할당을 수행한다. (cf. C언어에서는 malloc()이나 calloc() 함수 등을 이용하여 메모리의 동적 할당을 수행한다.) 타입* 포인터이름 = new 타입; (첫 번째 타입은 데이터에 맞는 포인터를 선언하기 위해, 두 번째 타입은 메모리의 종류를 지정하기 위해 사용됨.) 만약 사용할 수 있는 메모리가 부족하여 새로운 메모리를 만들지 못했다면, new 연산자는 널 포인터를 반환한다. C언어가 free() 함수를 이용하여 동적으로 할당받은 메모리를 다시 운영체제로 반환한다면, 이와 마찬가지로 C++에서는 delete 연산자를 사용하여, 더는 사용하지 않는 메모리를 다시 메모리 공간에 돌려준다. delete 포인터이름; (delete 연산자는 new 연..

언어/C++ 2023.09.21

[C++] 함수 오버로딩이란? (cf. 함수 오버라이딩)

오버로딩(overloading) : 이름은 같지만, 파라미터 수와 자료형이 다른 메소드를 중복 선언한 것 -> 이름 같음, 파라미터개수 다름, 파라미터 개수 같을 경우 자료형 다름 오버라이딩(overriding) : 부모 클래스의 메소드 동작 방법을 변경(재정의)한 것 -> 이름 같음, 파라미터개수 같음, 파라미터의 자료형 같음 -> 그래서 오버로딩이란? 함수 오버로딩(overloading)은 같은 이름의 함수를 중복하여 정의하는 것을 의미한다. 함수의 오버로딩이 가능 하려면 매개변수의 선언이 달라야 한다. 아래 두 쌍의 함수들은 오버로딩이 가능하다. // 매개변수의 자료형이 다른 경우 int func(char c){...} int func(int c){...} // 매개변수의 개수가 다른 경우 int ..

언어/C++ 2023.09.21