분류 전체보기
멀티 스레드 (Multi Thread) 소스코드
병렬처리 기법중 하나로 cpu안에 있는 여러개의 코어를 이용해서 더욱더 빠른 연산을 하게하는 기법이다. #include #include #include #include using namespace std; // 임계 영역 mutex mtx; //mutual exclusion int main() { // 여러가지 일을 동시에 처리 // cout이 깨지지않게 실행시키기 위해서 // mutex를 이용해 cout을 lock시키고 다 실행되면 // unlock하는 식으로 이용한다. auto work_func = [](const string& name) { for (int i = 0; i < 5; i++) { this_thread::sleep_for(chrono::milliseconds(100)); mtx.lock..
C++ 4가지 타입의 캐스팅
1. static_cast C언어의 타입 캐스팅과 동일하다. 논리적으로 변환 가능한 타입만 변환한다. 안에는 타입을 지정하고, ()안에는 캐스팅할 대상을 지정한다. 업캐스팅 다운캐스팅 참고 2. const_cast 변수, 포인터 변수 또는 참조형의 상수성을 추가 / 제거를 위한 캐스팅에만 사용. class Parent { int mVal = 0; public: Parent() = default; Parent(int Val) : mVal(Val) { } public: void Print() { cout
C# 클래스 타입 업/다운 캐스팅 (Up-DownCasting)
업캐스팅 부모 클래스 객체를 자식 클래스 객체로 변환. 인스턴스화 또는 자식 클래스 객체 할당하는 방법이 존재. 다운캐스팅 자식 클래스 객체를 부모 클래스로 객체로 변환. 오직 부모 클래스 객체로부터 할당만 가능. using System; using System.Collections.Generic; using System.Runtime.InteropServices; public class Parent { public virtual void Print() { Console.WriteLine("Parent 클래스"); } } public class Child : Parent { public override void Print() { Console.WriteLine("Child 클래스"); } } public..
C++ 클래스 타입 업/다운 캐스팅 (Up-DownCasting)
업캐스팅 클래스 객체를 기반 클래스로 변환하는것. 부모형으로 자식 클래스의 메소드에 접근 가능한 경우 추상메소드를 자식클래스에서 정의한 경우 부모클래스에 정의된 메소드를 자식에서 오버라이딩한 경우 class Parent { public: virtual void Print() { cout
C++ 명시적 형변환/캐스팅 (explicit)
명시적 형변환 int intVal = 2; float floatVal = (float)intVal; float floatVal = float(intVal); 아래와 같은 차이가 존재한다. int first = 5; int second = 2; float floatVal = first / second; float floatVal2 = (float) first / second; std::cout
C++ 상수식 (constexpr)
constexpr은 const처럼 변수에 적용 할 수 있으며 해당 변수에 대한 변경을 시도하면 컴파일러는 에러를 발생한다. const와는 다르게 생성자에 적용 할 수 있다. constexpr로 지정된 값이나 리턴 값이 상수이며 컴파일 타임에 계산된다. 템플릿 인수 및 배열 선언 같은 const 정수 값이 사용되는 곳에 constexpr 정수 값이 사용 될 수 있다. 컴파일 타임에 값이 계산되면 프로그램 실행 속도가 빨라지며 메모리 사용량이 줄어든다. constexpr 리턴 값 constexpr 함수의 리턴 값이 constexpr 속성을 가지려면 리터럴 타입이어야 한다. const int64_t const_mypow(int64_t itarget, int isquare) { if (isquare
[Unreal] 마우스 방향을 따라가는 총기 애니메이션 (Aim Offset)
Animation에는 Aim Offset과 Aim Offset1D가 존재한다. 가장 큰 차이점은 파라미터 개수의 차이다. 에임 오프셋은 하나의 애니메이션이기 때문에 애님 인스턴스에서 설정 해줘야한다. 가장 눈여겨봐야할건 Additive Settings이다 Aim Offset과 구성할 애니메이션 Sequence이 Preview Base Pose가 일치 해야한다. 애니메이션 Sequence 내 Additive Anim Type을 Mesh Space와 Base Pose Type을 Selected animation frame으로 설정하는것도 중요하다. 가운데, 가운데 상, 가운데 하, 오른쪽, 오른쪽 상, 오른쪽 하, 왼쪽, 왼쪽 상, 왼쪽 하가 각각 구성 후 추가한다. Horizontal Axis을 Yaw로 ..
C++ 클래스 상속 불가 및 함수 오버라이딩 불가 (final)
최종 키워드를 사용하여 상속할 수 없는 클래스를 지정하거나 파생 클래스에서 재정의할 수 없는 가상 함수를 지정할 수 있다. 다음 예제에서는 최종 키워드를 사용하여 클래스를 상속받을 수 없도록 지정한다. class Parent final { }; class Derived : public Parent { }; 다음 예제에서는 최종 키워드를 사용하여 가상 함수를 오버라이딩 할 수 없도록 지정한다. class Parent { public: virtual void Print() final { } virtual void Print2() { } }; class Derived : public Parent { public: virtual void Print() override { } virtual void Print2(..
C# 읽기 전용 (readonly)
readonly 키워드는 다음 네 가지 컨텍스트에서 사용할 수 있는 한정자다. 필드 선언에서 필드에 대한 할당을 나타내는 readonly는 선언의 일부로 또는 동일한 클래스의 생성자에서만 발생할 수 있다. 필드 선언과 생성자 내에서 읽기 전용 필드를 여러 번 할당 및 재할당할 수 있다. 값 형식은 해당 데이터를 직접 포함하므로 값 형식인 readonly 필드는 변경할 수 없다. 참조 형식에는 해당 데이터에 대한 참조가 포함되므로, readonly 참조 형식인 필드는 항상 같은 개체를 참조해야해당 개체를 변경할 수 있다. 생성자가 종료된 후에는 readonly 필드를 할당할 수 없다. 이 규칙의 의미는 값 형식과 참조 형식에서 서로 다르다. readonly struct 형식 정의에서 readonly는 구조..
C# 클래스 상속 불가 및 함수 오버라이딩 불가 (sealed)
클래스에 적용된 경우 sealed 한정자는 다른 클래스가 해당 클래스에서 상속하지 못하도록 한다. using System; using System.Collections.Generic; using System.Runtime.InteropServices; public class Parent { } public sealed class Derived : Parent { } public class AnotherDerived : Derived { } public class Test { public static void Main() { AnotherDerived anotherDerived = new AnotherDerived(); } } 함수 같은 경우에는 가상 함수 오버라이딩 방지용으로 쓰여진다. using Sys..