프로그래밍 공부

2024/01 107

카테고리 설명
  • C++에서 다형성을 지원하기 위한 메커니즘 중 하나로, 가상함수들의 주소를 담고있는 테이블이다. 가상함수 테이블의 역할 다형성을 지원하기 위해 가상함수의 주소를 저장한다. 함수의 주소를 저장한다는 점에서 함수테이블과 동작방식이 비슷하다. 객체의 실제 타입에 따라 올바른 함수를 호출하는 데 사용한다. 우선, 가상함수 테이블에 대해 더 자세히 알려면, 가상함수부터 알아야 한다. 가상함수 virtual 키워드가 붙은 멤버 함수로, 파생클레이스에서 재정의할 수 있다. 가상함수를 선언하는 순간. 해당 클래스는 가상 함수 테이블을 가질 가능성이 생긴다. 만약, 완전가상인 =0 또는 null선언을 해주면 무조건 가상 함수 테이블을 가진다. 가상함수 테이블 클래스에 가상 함수가 하나라도 존재한다면, 해당 클래스의 객체..

  • C++에서 런탕미에 객체의 타입 정보를 확인하는 메커니즘을 말한다. RTTI는 C++의 다형성(polymorphism)을 활용하고 객체의 동적인 특성을 다룰 때 유용하게 사용된다. 사용예시 객체의 실제 타입을 런타임때 확인하는데 사용된다. 다형성을 지원하며, 가상 함수와 함께 사용하여 동적 바인딩 기능을 가능케 한다. typeid 연산자를 사용하여 객체타입의 정보를 얻을 수 있다. typeid typeid 연산자는 객체의 타입정보를 반환한다. #include // 객체 또는 포인터에 대해 typeid 연산자 사용 const std::type_info& typeInfo = typeid(obj); 사용 부분 dynamic_cast dynamic_cast는 RTTI와 함께 사용되며, 안전한 다운캐스팅을 지원한..

  • C++에서는 4가지 형변환 연산자를 지원한다. static_cast 정적캐스트로, 보통 정적 이라 하면 언어에서 컴파일시에~ 동적이라면 런타임시에~ 를 의미함으로, static_cast연산자를 통해 형변환 하면 컴파일 타임에 형변환이 가능한지 검사한다. 컴파일 타임에 수행되는 가장 일반적인 형변환 연산자로, 안전한 형변환이 보장되는 상황에서 사용한다. 기본적인 형변환에서 사용되며, 명시적인 변환을 나타내는 특징이 있다. 장점 명시적이고 간단한 형변환 방법이다. 컴파일러에서 경고를 제공할 수 있다. 단점 런타임 유효성 검사가 없어서, 일부오류가 터졌을때 찾느라 머리도 같이 터질 수 있다. float floatNumber = 3.14f; int intNumber = static_cast(floatNumber..

  • 언리얼에서 사용할 수 있는 스트링 처리는 FName, FText, FString으로 나누고있다. 각 문자열, 로컬라이징 및 텍스트 처리, 이름관리 를 위한 클래스이다. FName 콘텐츠 브라우저에서 새 에셋 이름을 지을 때, 다이나믹 머티리얼 인스턴스의 파라미터를 변경할 때, 스켈레탈 메시에서 본에 접근할 대. 모두 FName을 사용한다. FName은 Static데이터 마냥, 문자열 사용에 있어서 재선언을 막아주는 효과가 있는데, 주어진 문자열이 재사용된다고 하더라도, 데이터 테이블에는 한번만 저장된다. FName에는 다음과 같은 특징이 있다. FName은 대소문자를 구분하지 않는다. 대문자, 소문자를 구분없이 탐색, 저장한다. 변경할 수 없다. ( 정적인 데이터 이기 때문에 ) 조작할 수 없다. ( 선..

  • 문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때..

  • 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..