개발자 면접 공부 111

C++ 캐스팅의 종류

C++ 에는 4가지의 캐스팅이 있습니다. 그 캐스팅을 공부해봅시다. 캐스팅은 자료형간 또는 포인터간 형변환시 사용됩니다. 캐스팅은 크게 묵시적 캐스팅와 명시적 캐스팅 두 가지로 나눌 수 있습니다. 특별히 캐스팅 연산자를 사용하지 않고 이루어지는 경우를 묵시적 캐스팅이라고 합니다. static_cast static_cast 의 특성은 묵시적 캐스팅와 일치적으로 같다고 보면 됩니다. 묵시적 캐스팅에는 컴파일 시점에서 무결성 검사를 하는데 이떄 허용 과 컴파일러에 의한 값 변환 이라는 두 가지 관점에서 이루어 집니다. 컴파일 타임에서 제약사항은 에러를 발생시킵니다. static_cast는 형변환에 대한 타입체크를 run time 에 하지않고 compile 타임에 정적으로 수행합니다. #include using..

C++ RTTI 에 대해

오늘은 RTTI에 대해 공부하겠습니다. RTTI란? Run Time Type Information의 약자로 프로그램 실행 중에 개체의 형식이 결정될 수 있도록 하는 매커니즘입니다. 다시 말해 실행중 포인터가 가르키는 객체의 타입을 알 수 있게 해주는 하나의 방법입니다. 기본적으로 RTTI가 필요한 이유는 A 타입에서 B 타입으로 변경할때 정보가 필요합니다. 컴파일시간에 타입 변환이 이루어진다면 굳이 RTTI가 필요 없습니다 하지만 컴파일 단계에서 충분히 알 수 있고 특정 타입으로 확정할 수 있기 때문입니다.(런타임 중에 타입 변환이 이루어질 경우) virtual 클래스로부터 상속이 하나라도 존재하면 RTTI를 사용하고 있습니다. dynamic_cast 또한 RTTI에 매우 의존적입니다. 초기단계 분석에서..

C++ 순수 가상 함수(추상 클래스)

순수 가상 함수에 대해 공부합시다. 순수 가상함수란? - 함수의 정의는 없으며 오직 다형성 파생 클래스에 오버라이드(override)만으로 적용되는 함수입니다. virtual void Open() = 0; 요런 형태가 됩니다. 이렇게 선언된 순수 가상 함수가 있는 클래스는 보통 추상 클래스(abstract class) 라고 부릅니다. 이러한 추상클래스에 특징은 절대로 자기 혼자 객체화를 시킬수가 없습니다. 왜 이러한 추상 클래스를 사용을 하는가에는 ex) 예를들어 자동차가 있으면 그 자동차에도 스포츠 자동차가 있고 일반차가 있으면 차에 문을 위로 올리는 차 아래로 올리는 차로 나눌수 있습니다. 또한 추상클래스를 상속받는 클래스들은 순수가상함수를 반드시 재정의를 해줘야하기때문에 강제성도 보장합니다. 이를 ..

C++ Virtual(가상) 함수

오늘은 Virtual 함수 가상 함수에 대해 공부하도록 하겠습니다. 가상 함수란? - 기본 클래스 내에서 선언되는 파생 클래스에 의해 재정의되는 맴버함수 가상 함수를 호출하고 파생 클래스의 함수를 실행할 수 있습니다. 주로 실행시간에 함수의 다형성을 구현하는데 사용됩니다. 가상 함수는 기본 클래스내에 Virtual 키워드로 함수를 선언합니다. 가상 함수 선언에는 몇가지 규칙이 존재합니다. 1. 클래스의 공개(public) 섹션에 선언합니다. 2. 가상 함수는 정적(static)일 수 없으며 다른 클래스의 친구(friend) 함수가 될 수도 없습니다. 3. 가상 함수는 실행시간 다형성을 얻기위해 기본 클래스의 포인터 또는 참조를 통해 접근(access)해야 합니다. 4. 가상 함수의 프로토타입(반환형과 매..

C++ 포인터(Pointer) 레퍼런스(Reference) 차이

포인터와 레퍼런스에 차이 시작 포인터(Pointer)와 레퍼런스(Reference)는 보면 둘다 참조를 하는 변수임은 똑같다고 생각을 하였다. 하지만 이 둘도 엄연히 차이점이 존재하였다. 그 차이점을 알아보자. 1.NULL의 허용 여부 일단 NULL을 허용하냐 안하냐에서 차이점이 난다. 포인터는 NULL 즉 nullptr도 허용이 되지만 레퍼런스 만큼은 허용이 되지않습니다. 포인터는 즉 NULL을 가르키거나 초기화 하지 않을경우 Null pointer exception 또는 Segmentation Fault 에러를 난다. 따라서 포인터는 반드시 Null Check 를 해줘 코드를 처리를 해줘야 에러를 방지할수 있습니다. Student S = new Student(); if(S!=nullptr) { S->..

댕글링 포인터(Dangling Pointer)

댕글링 포인터 댕글링 포인터란? - 포인터가 여전히 해제된 메모리 영역을 가리키고 있다면, 이러한 포인터를 댕글링 포인터(Dangling Pointer)라고 한다. 댕글링 포인터가 가르키는 메모리는 더는 유효하지 않다. 댕글링 포인터는 Premature Free(조숙한 해제, 너무 급한 해제) 라고 부르기도 한다. 댕글링 포인터의 사용은 아래 목록에 나열된 문제를 포함한 다양한 문제가 있다. -메모리 접근시 예측이 불가능한 동작 -메모리 접근 불가 시 Segmentation Fault -잠재적인 보안 위험 이런 문제는 다음과 같이 동작을 할경우 발생한다. -메모리 해제 후, 해제된 메모리에 접근 -함수 호출에서 자동 변수를 가리키는 포인터의 반환 - 댕글링 포인터의 코드 - #include using n..

#9 에디터내 테스팅(플레이 & 시뮬레이트)

1.목차 1. 개요 2. 툴바 3. 에디터에서 플레이 4. 에디터에서 시뮬레이트 5. 게임플레이 테스팅 2. 개요 언리얼 엔진 에디터에서는 파일을 저장하지 않고도 에디터 안에서 아무데나 플레이어를 스폰시키고 게임을 바로 플레이 할수있습니다. 사용할 수 있는 프리뷰 모드는 두 가지, 플레이 버튼 및 시뮬레이트 입니다. 에디터내 프리뷰 시스템은 에디터에서 플레이와 에디터에서 시뮬레이트 세션 사이 전환을 지원이 가능합니다. 3. 툴바 에디터에서 시뮬레이트 또는 에디터에서 플레이 세션의 시작은 레벨 에디터 나 블루프린트 에디터 에서 적합한 툴바 버픈 또는 드롭다운 메뉴를 사용하여 가능합니다. 레벨 에디터 에서 플레이 버튼을 누르면 게임플레이 테스트가 가능한 에디터에서 플레이(PIE) 세션을 시작합니다. 드롭 다..

#8 기본 하우투(도움말, 액터 조작, 플레이, 액터 프로퍼티)

1.목차 1. 기본 하우투 2. 도움말 3. 액터 조작 4. 플레이 5. 액터 프로퍼티 2. 기본 하우투 언리얼 엔진 4의 에디터를 처음 사용할경우 자주 사용되는 기능을 빨리 익힐수 있게하는것. 각각 How To(어떻게?) 라는 주제를 가지고 단계별로 알게 될 것이다. 3. 도움말 & 답변 언리얼 엔진 4는 작업시, 무언가 이해가 가지않는 부분이 많습니다. 그 것을 도와주는것이 언리얼 엔진4 도움말입니다. 에디터에 명확한 설명과 예시를 보기위해 여러 기능을 제공해줍니다. 그로인해 초보자들은 더 많은 기능을 공부할수있으므로 걱정을 안하셔도 됩니다. 여러가지의 방법이 있습니다. 3.1 리치 툴팁 에디터의 특성 부분에 대해 더욱 자세히 배울수있는 첫 번째 방법은, 에디터의 리치 툴팁을 통한 방법입니다. 에디터..

#7 언리얼 에디터 인터페이스(프로퍼티 매트릭스, 소스 컨트롤, 시스템과 툴)

1.목차 1. 프로퍼티 매트릭스 2. 소스 컨트롤 3. 시스템과 툴 2. 프로퍼티 매트릭스 프로퍼티 매트릭스는 한창에 다양한 오브젝트 및 액터를 제어할수 있는 창입니다. 모든 프로퍼티를 표 형식으로 표시해 주는 프로퍼티 에디터를 제공합니다. 프로퍼티 매트릭스는 행, 열로 이루어져있으며 이를 통해 대량 편집이 가능합니다. 2.1 프로퍼티 매트릭스 열기 프로퍼티 매트릭스는 두 가지의 여는 방법이 있습니다. 디테일 탭에 버튼이 하나있습니다. 이 버튼을 누르면 프로퍼티 매트릭스가 실행이 됩니다. 또한 콘텐츠 브라우저에서 애셋 액션에서 보면 프로퍼티 매트릭스 에디터를 실행할수있습니다. 그럼 에디터 창이 나타나고 이를 통해 열을 정렬하여 쉽게 볼수도있고 대량으로 편집을 합니다. 3. 소스 컨트롤 UE4는 소스컨트롤..

#6 언리얼 에디터 인터페이스(키바인딩 에디터, 메시 프리뷰 씬, 프로젝트 세팅)

1.목차 1. 키바인딩 에디터 2. 메시 프리뷰 씬 3. 프로젝트 세팅 2. 키바인딩 에디터 키바인딩 에디터는 자신만의 키보드 단축기를 설정하는 칸입니다. 사용자의 편의에 맞게 키 한개를 사용하거나 키를 조합하여 여러 작업을 할수 있습니다. 키보드 단축기 설정은 에디터 개인설정 창에서 가능합니다. 키보드 단축키를 변경하려면 편집 메뉴에서 에디터 개인설정 에서 키보드 단축키를 선택하시길 바랍니다. 검색 칸에 명령의 일부 또는 전부를 검색하여 표시되는 명령 목록에 필터를 적용할수 있습니다. 키보드 단축키에 대해 새로 만들수도 있습니다. 하지만 키보드 단축기를 지정했는데 있는 단축기라면 오류가 나옵니다. 그땐 버튼(Override) 을 누르개 될경우 새로운 단축키가 설정되지만 기존 단축키는 제거됩니다. 3. ..