전체 글 썸네일형 리스트형 2024 - 12 -24 객체지향적 설계 객체 지향 프로그래밍의 중요성 C++에서 객체 지향적으로 코드를 구현하는 것은 매우 중요합니다. 그 이유는 다음과 같습니다: 구현 시간 단축: 잘 설계된 코드는 재사용이 가능하여 개발 시간을 줄여줍니다. 유연성: 기능 변경이나 추가가 용이합니다. 코드의 구조가 잘 되어 있으면 수정이 쉽습니다. 오픈소스 및 라이브러리: 대부분의 라이브러리와 오픈소스 프로젝트가 객체 지향적으로 설계되어 있습니다. 설계 원리 이해객체 지향 프로그래밍을 깊이 이해하기 위해서는 설계 원리를 아는 것이 중요합니다. 그 중 하나가 응집도입니다.응집도응집도는 클래스 내의 모듈들이 얼마나 잘 어우러져 있는지를 나타내는 개념입니다. 응집도가 높을수록 클래스의 품질이 좋아지는데, 이는 관련된 기능들이 함께 모여 있기 때문입니다.하나의 클.. 더보기 2024- 12 - 24 STL 공부 STL 은 c++ 에서 자체적으로 제공하는 표준 라이브 러리개발 시 유용하게 사용되는 컨테이너, 알고리즘이 구현되어 있기 때문에 ,헤더 파일을 추가하고 사용 하기만 하면 됩니다. 컨테이너 데이터를 담는 자료 구조입니다.데이터를 담는 방식이나 제공하는 방식에 따라 여러가지 컨테이너가 있습니다. 모든 컨테이너는 템플릿으로 구현 되어 있어 타입에 상관없이 사용 가능합니다.메모리 관리를 내부적으로 합니다 사용시 메모리 관리를 고려하지 않아도 됩니다.컨테이너는 반복자를 가지고 있습니다. 컨테이너 내부 세부적인 구현사항을 알지못해도모든 컨테이너를 동일한 문법으로 접근할 수 있습니다. 벡터(vector) 벡터는 배열과 유사한 컨테이너 입니다.타입에 종속되지않는 템플릿 클래스로 구현됩니다.원소 개수에 따라 내부 배열의.. 더보기 2024-12-23 c++ 함수 오버로딩, 템플릿 함수 오버로딩c++에서는 동일한 이름의 함수를 만들 수 있습니다.그러기위해서는 매개변수타입과 개수가 달라야합니다. #include using namespace std;//int 타입void test(int a){ cout 이런식으로 함수 매개변수에 따라 같은 함수명이여도 다르게 사용 가능합니다. 아래의 방식들은 컴파일 에러가 발생합니다. 반환 타입만 다른 경우int fail(){ return 1;}float fail(){ return 1.1f;} 디폴트 매개변수가 있는 함수void fail(int a = 1){ cout 매개변수의 타입이 포인터와 배열로 다를 경우void fail(int* arr){ cout 이것말고도 오류가 생기는 건 더욱 있겠지만 이게 대표적 입니다. 템플릿 템플릿 .. 더보기 2024-12-23 c++ 얕은 복사 , 깊은 복사 얕은 복사(shallow copy) 대입연산자를 활용해서 두 개의 포인터가 같은 위치를 공유하는 것을 의미#include using namespace std;int main() { int* A = new int(2); // 포인터 B에 A가 가리키는 메모리를 공유 int* B = A; cout 두 개의 포인터가 같은 위치를 공유하니 하나의 포인터에서 메모리를 해지시키면 다른 한 쪽에서 사용불가함. (청소 빗자루를 2명이 사용하는데 한명이 버리면 다른 한명은 사용 못하는 것처럼) dangling pointer가 발생할 수 있는 복사입니다. 깊은 복사(Depp Copy) 서로 다른 메모리 영역을 할당해서 위치를 공유 하는 것이 아닌 값을 복사하는 것을 말합니다.하나가 해지해.. 더보기 2024 -12 - 23 c++ 자원 관리 메모리의 공간은 한정되어있습니다.메모리가 쌓이면 결국 문제가 생길 것입니다. 그래서 공간을 효율적으로 사용해야합니다., 스택 메모리 일반 변수들은 대부분 스택 메모리공간을 차지합니다.특징은 변수의 생존 주기가 끝나면 변수 선언시 할당되었던메모리고 저절로회수 된다는 것입니다.사용자가 따로 메모리를 관리해줄 필요가 없습니다.!!중괄호를 벗어나면 사라집니다.{ } 대부분의 지역 변수는 스택메모리에서 관리됨. 단점 메모리 영역 자체가 크지않습니다.메모리생존 영역을 벗어나면 자동 해지됩니다. 힙 메모리 스택의 단점은 힙메모리로 해결 합니다. 스택 처럼 자동해지 되지 않습니다.생존주기가 선언한 순간부터 해지하기 전까지입니다. new - delete순으로 생성되었으면 해지할때까지 계속 살아있습니다. #inc.. 더보기 2024 - 12 - 20 Unreal (오버랩) 게임에서 공격하거나 피격을 당할때 대부분 부딪히거나 닿았을 경우 이 이벤트들이 실행 됩니다. 콜리전에서 부딪힌걸 감지하고원하는 이벤트를 실행 시킬때 사용 합니다. 방법 1 트리거 를 선택후 레벨 블루프린트 열기 방법 2 블루프린트 클래스를 만들고 그 안에서 박스 생성후 사용 블루프린트 클래스에서 컴포넌트 추가하고 거기서 원하는 배치를 할 수 있고 거기서 박스 콜리전을 추가후 박스콜리전 등으로 감지하는 방법이 있습니다. 박스콜리전 누른상태에서 노드생성시box에 대한 이벤트추가 - 콜리전 - 이벤트들이있습니다. 이번에는 닿았을때 begin overlap을 사용했습니다.begin overlap - branch -true 일 경우 begin overlap 에서 현재 닿인 액터가 플레이어 캐릭터 클.. 더보기 2024- 12 -20 Unreal (애니메이션 블루 프린트, 블렌드 스페이스) 애니메이션 블루프린트 어제 배운 SkeletalMeshComponent의 애니메이션 그래프를 제어하기 위한 블루프린트.캐릭터의 애니메이션을 여기서 지정 해줄 수 있습니다. 현재 액터의 속도값에 따라 속도를 측정 z축의 속도가 0이상이면 점프로 감지하는 방식으로 만들었습니다. 여기서도 노드를 통해 기능을 설정 할 수 있습니다. 애니메이션 블루프린트에서 블렌드 스페이스를 가져와서 사용 할 수 있으며두번째 이미지인 상태패턴안에 넣을 수도 있습니다. 애니메이션 블루프린트 ㄴ 상태머신 ㄴ 블렌드 스페이스 , 점프 애니메이션위의 순서대로 기능들이 들어있습니다... 더보기 Unreal - pawn(폰) 폰에서 기능 추가한게 캐릭터이니 폰에 대해서 알아보려 했습니다. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/pawn-in-unreal-engine 폰 클래스는 플레이어나 AI가 제어할 수 있는 모든 액터의 베이스 클래스 입니다. 폰과 액터를 만들고 확인하면 둘다 컴포넌트가 추가된 상태는 아닙니다만디테일에 폰이 있냐 액터가 있냐로 나뉩니다. 폰은 제어 할 수 있는 액터 베이스 클래스라는 점에서 볼 수 있듯이빙의라는 기능이 있습니다. 이 기능을 통해 해당 폰을 플레이어가 움직이는지 ai가 움직이는지 정할 수 있습니다. 더보기 이전 1 2 3 4 5 6 다음