분류 전체보기
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..
C 정렬 코드
선택 정렬 #include int size; // 배열의 크기 void selectionSort(int a[], int size) { int t, temp; printf("\n정렬할 원소 : "); for (t = 0; t = 1) { for (int i = 0; i >", interval); for (t = 0; t < inde..
C# 중첩 클래스 (Nested Class)
클래스 내부에서 클래스를 정의할 수 있다. 중첩 클래스를 사용하여 클래스를 그룹화할 수 있으며, 클래스의 사용 범위를 제한할 수 있다. class OutsideClass { // ... class InsideClass { // ... } } OutsideClass 내부에 InsideClass 클래스를 정의했으므로 OutsideClass는 중첩 클래스다. 사용하는 이유 클래스를 논리적으로 그룹화할 수 있다. 특정 클래스 내부에서만 사용되기 때문에 코드를 더 쉽게 파악할 수 있으며, 유지 관리가 쉽다. 특정 클래스 내부에서만 사용되므로 클래스 구조가 단순해진다. 예제 학교에는 선생님이 존재하므로 School 클래스 내부에 Teacher 클래스를 선언한다. public class School { public ..
C++ 중첩 클래스 (Nested Class)
중첩 클래스의 이름은 포함 클래스의 범위에 있으며 중첩 클래스의 멤버 함수에서 이름을 조회하면 중첩 클래스의 범위를 검사 한 후 포함 클래스의 범위를 방문한다. 둘러싸는 클래스의 다른 멤버와 마찬가지로 중첩 클래스는 둘러싸는 클래스가 액세스하는 모든 이름 (개인, 보호 등)에 액세스 할 수 있지만 그렇지 않으면 독립적이며 둘러싸는 클래스 this 포인터에 대한 특별한 액세스는 없다 . 중첩 클래스의 선언은 둘러싸는 클래스의 형식 이름, 정적 멤버 및 열거 자만 사용할 수 있다. (C ++ 11까지) 중첩 클래스의 선언 은 비 정적 멤버에 대한 일반적인 사용 규칙 에 따라 둘러싸는 클래스의 모든 멤버를 사용할 수 있다 . (C ++ 11부터) int x,y; // globals class enclose {..
C++ 친구 클래스 및 함수 (friend)
friend 클래스는 friend로 선언된 다른 클래스의 private 및 protected 멤버에 접근할 수 있다. 사용법은 friend 키워드를 사용하여 클래스나 함수를 명시 해 주는 것이다. 함수 같은 경우에는 전역함수랑 동일해진다, static 클래스 종속 함수랑은 별개. #include #include #include using namespace std; class A { friend class B; int mVal = 0; protected: void ProtectedFunc() { cout
C# 부분 클래스 (partial)
partial 키워드는 C#에서 부분 클래스를 지정한다, 장점으로는 여럿이서 하나의 프로젝트를 작업할 시 클린 코드를 유지할 수 있다는 점이다. 여러 책임이 있는 클래스가 있는 경우 각 클래스를 두 개의 구분자 클래스로 분할해야 한다. 부분 클래스를 사용하면 한 클래스의 정의를 여러 파일로 분할할 수 있다. 이 튜토리얼에서는 Person 클래스의 정의를 Person1.cs 및 Person2.cs 여러 파일로 분할한다. Person.cs using System; namespace partial_class { public partial class Person { private int id; private string name; public Person(int id, string name) { this.id ..
C# 인덱서 (Indexer)
인덱서는 인덱스를 이용해 객체 내의 데이터에 접근하게 해주는 프로퍼티이다. 인덱서를 선언하는 방법 class 클래스이름 { // 한정자 인덱서형식 this[형식 인덱스식별자] { get { // 인덱스식별자를 이용하여 내부 데이터 반환 } set { // 인덱스식별자를 이용하여 내부 데이터 저장 } } } 인덱서는 프로퍼티처럼 식별자를 따로 가지지는 않는다. 프로퍼티는 이름을 통해 객체 내의 데이터에 접근하지만 인덱서는 인덱스를 통해 객체 내의 데이터에 접근한다. 인덱서의 선언 예 인덱서를 통해 정수 형식 배열 array에 접근한다. 인덱서를 통해 데이터를 저장할 때 인덱스보다 배열의 크기가 작다면 배열의 크기를 인덱스에 맞춰 재 조정하는 코드이다. class MyList { private int[] a..
C# 확장 메서드 (Extension Method)
확장 메서드(MSDN 링크) 는 C# 3.0부터 추가된 기능으로 미리 정의된 형식에 사용자 정의 함수를 확장(추가)시키는 작업을 수행한다. 예로 들어서 string 형식에 Print라는 함수를 확장할 때 일반적인 경우라면 형식에 메서드를 추가하기 위해서는 해당 형식의 소스 코드가 필요하다. string 형식은 mscorlib (Multi-language Standard Common Object Runtime Library, 다국어 표준 공용 언어 런타임 라이브러리) 프로젝트에 포함되어 있으며, 변경 후에는 이 프로젝트를 다시 빌드하여 어셈블리를 만들어야 한다. 깃헙 링크 하지만, 확장 메서드를 사용한다면 해당 형식의 코드를 변경하지 않고 내 코드에서 어떤 형식이던지 메서드를 확장시킬 수가 있게 된다. 확..
[Unreal] RootComponent 루트 컴포넌트
루트 컴포넌트는 충돌 인식과 월드 스페이스에서 오브젝트의 위치를 결정하고 항상 충돌을 탐지하는 컴포넌트(메쉬(Skeletal, Static) , 충돌체)여야 한다. 메쉬 컴포넌트를 설정했을 시 Mobility라는 항목이 추가된걸 확인해 볼 수가 있다, 이는 크게 3개로 나뉜다. 추가적으로 Set Simulate Physics를 할 시 무조건 Movable이여야 한다. Static > 맵에서 움직이진 않고 라이트닝 또한 인게임 중 위치를 바꿀 수가 없다. Stationary > 맵에서 움직이진 않지만 라이트닝 위치를 인게임에서 바꿀 수가 있다. Movable > 맵과 라이트닝 동일하게 움직일 수가 있다. 참고 : https://docs.unrealengine.com/4.26/en-US/BuildingWor..
[Unreal] RadialForceComponent 하중을 가하는 컴포넌트
Radial Force Component를 추가한 후 루트 컴포넌트에 부착한다. 추가적으로 대상 오브젝트는 항상 Simulate Physics true 상태여야 한다. Radius > 범위 Object Types To Affect > 하중을 가하고자 하는 오브젝트(엑터) 타입 Impulse Strength > Fire Impulse 함수를 통해 하중을 단방에 가할 힘 Impulse Vel Change > 하중을 대상 오브젝트 무게와 상관없이 일정하게 가하는 것 Force Strength > 별다른 함수 호출 없이 하중 컴포넌트가 Activate 상태일 때 서서히 하중을 가할 힘 캐릭터는 폭발물에 하중을 가할 필요가 없으므로 제거해줬다. RadialForceComp->RemoveObjectTypeToAff..