분류 전체보기 49

[C++] 연산자 오버로딩 (이항연산자의 매개변수가 하나인 이유)

연산자 오버로딩 개념을 공부하던 중에 아래코드에서 -는 이항 연산자인데 왜 매개변수를 하나만 받는 것인지 궁금해졌다.. #include using namespace std; class Position { private: double x_; double y_; public: Position(double x, double y);// 생성자 void Display(); Position operator-(const Position& other);// - 연산자 함수 }; int main(void) { Position pos1 = Position(3.3, 12.5); Position pos2 = Position(-14.4, 7.8); Position pos3 = pos1 - pos2; pos3.Display();..

언어/C++ 2023.10.06

[C++] for each문 ->참조 변수 언제 사용? (feat.깊은 복사, 얕은복사) (+ cin.fail) 예제

다음은 커피자판기로 작동하는 프로그램을 만들기 위해 필요한 두 클래스이다. class CoffeeVendingMachine { // 커피 자판기를 표현하는 클래스 Container tong[3]; // tong[0]는 커피, tong[1]은 물, tong[2]는 설탕통을 나타냄 void fill(); // 3개의 통을 모두 10으로 채움 void selectEspresso(); // 에스프레소를 선택한 경우, 커피 1, 물 1 소모 void selectAmericano(); // 아메리카노를 선택한 경우, 커피 1, 물 2 소모 void selectSugarCoffee(); // 설탕커피를 선택한 경우, 커피 1, 물 2 소모, 설탕 1 소모 void show(); // 현재 커피, 물, 설탕의 잔량 출..

언어/C++ 2023.09.30

[Unreal Engine 5] 9. 오브젝트, 컴포넌트, 레퍼런스, 노드(데이터 핀, 실행 핀)

오브젝트란? 데이터와 기능의 집합이다. 액터는 레벨에 투입할 수 있는 오브젝트이다. 컴포넌트란? 액터로 들어가는 오브젝트. (액터는 레벨에 들어가고 컴포넌트는 액터 자체에 들어간다.) 레퍼런스란? -> 주소를 뜻한다. 오브젝트에는 많은 데이터가 있기 때문에 오브젝트를 복사하면 컴퓨터로 다루기에 너무 무거워지는 문제가 발생할 수 있다. 그렇기 때문에 레퍼런스라는 개념을 사용한다. 레퍼런스는 주소 내지는 컴퓨터의 메모리에서 이 오브젝트를 찾기 위해 가야할 위치로서 오브젝트를 계속 옮길 필요가 없도록 만들어준다. 큐브에서 몇 가지 기능을 사용하고자 하는 경우, 씬 안에 큐브를 선택한 다음 레벨 블루프린드로 이동해 우클릭을 한 다음, 'Create a Reference to Cube'를 선택해주면 새 노드가 생..

Unreal 2023.09.29

[C++] locale이란?

1. locale을 사용하는 이유 C나 C++ 프로그래밍을 처음 배울 때 각 문자를 아스키(ASCII) 코드를 표현하는 바이트로 취급했다. 그런데 아스키 문자를 사용하지 않는 언어가 있다. 따라서 프로그램을 작성할 때는 당장 전 세계 사용자를 대상으로 삼지는 않더라도 나중에 Localization(현지화)를 지원하거나 다양항 로케일(locale)을 인식하게 만들 수 있도록 디자인하는 것이 좋다. 그래서 로케일(Locale)이란? 로케일이란 사용자 인터페이스(UI)에서 사용되는 언어(ISO 639-1 codes 표준 형식), 지역 설정(ISO 3166-1 표준 형식), 출력 방식(Character Set 또는 ISO 8859-1, UTF-8 등의 인코딩 식별자) 등을 정의하는 문자열을 말한다. OS에서 로..

언어/C++ 2023.09.29

[Unreal Engine 5] 8. 중력 적용, 해제, 질량 부여 (feat. physics)

CPU가 physics를 시뮬레이션하는 데 부담이 있기 떄문에 굳이 해야하는 것이 아니라면 언리얼 씬 안의 오브젝트에 시뮬레이션을 적용하지 않는다. 그렇기에 의자를 공중에 띄어놓아도 중력이 적용되지 않는다. 따라서 이번에는 공중에 떠있는 의자에 설정을 통해 중력을 적용할 것이다. 1. 먼저 Physics를 선택한다. 2. simulate physics를 체크된 상태로 바꿔준다. 완성...! 공중에 떠다니게 하고 싶을 때... enable gravity의 체크를 해제해주면 된다. 질량 부여하기 다른 프로퍼티로는 질량이 있는데, 물질의 질량이 몇 kg인지 다루는 프로퍼티이다. 기본적으로는 계산되지만 체크박스를 선택해 원하는 질량을 부여할 수 있다.

Unreal 2023.09.29

[Unreal Engine 5] 7. 블루프린트 이용하여 화면에 메시지 출력 (노드 연결, 해제)

개발 헤딩 아래에 있는 print string을 클릭하면 이렇게 노드가 나온다. 노드란 블루프린트에서 사용할 수 있도록 미리 만들어진 기능을 의미한다. 이벤트란 언제 사건이 발생해야 하는지에 관한 노드이다. Event Begin Play는 플레이 버튼을 눌렀을 때 사건이 발생해야 한다는 것을 알려준다. 입력 핀(Input Pin) : 왼쪽에 있는 핀으로 언제 이 노드를 실행할 지 알려준다. 출력 핀(Output Pin) : 이 노드 이후에 무엇을 할 지 알려준다. play버튼을 누르면 hello를 출력한다. 노드 연결 해제 법 alt키를 누르고 동그라미 친 부분을 누르면 노드 연결이 해제된다.

Unreal 2023.09.29

[Unreal Engine 5] 6. 블루프린트 보는 법 (블루프린트란, 레벨이란, 맵 여는 법, 맵 복제)

블루프린트란? -> 시각 프로그래밍 언어이다. (언리얼 전용) 레벨이란? (+ 맵 여는 법) 프로젝트를 시작하면 화면 밑에 Content Drawer가 있는데 이걸 클릭한 후 Maps라는 폴더가 있는데 (Content > Starter Content > Maps로 가면 됨.) ->Maps 를 더블 클릭하면 레벨을 열 수 있다. 여기서 맵은 게임에 있는 레벨을 의미한다. 여기서 노란색 선이 있는 것이 맵이다. 맵을 선택한 후 우클릭하여 duplicate를 누르면 복제가 가능하다. 그래서 블루프린트 보는 법은? 여기를 클릭하면 새 에디터 뷰 창이 나온다. 이벤트 그래프에서 블루프린트를 작성할 수 있다. 이벤트 그래프를 우클릭하면 이렇게 기능 리스트들을 볼 수 있다.

Unreal 2023.09.28

[C++] 1. 멤버이니셜라이저(feat. const 변수), 2. 생성자와 소멸자를 이용한 동적할당, 3. this 포인터

1. 멤버이니셜라이저란? 멤버이니셜라이저 (변수초기화방식) : 선언과 동시에 초기화한다. 함수 : 초기화 할 변수(초기화 될 값) 형식으로 선언해준다. 예시로 const 변수와 함께 멤버이니셜라이저를 살펴보자. //const 변수는 반드시 선언 시 초기화를 해야 한다. 즉, 초기화하지 않으면 //컴파일 에러가 발생한다. 따라서 class나 struct의 멤버변수를 const로 선언 시에는 //반드시 초기화 히스트(initialize list)를 사용해야 한다. //정상적인 코드 class ConstExample{ const int num; ConstExample(void) : num(3); //이것이 멤버이니셜라이저이다. }; //컴파일 에러가 나는 코드 class ConstExample{ const i..

언어/C++ 2023.09.25