728x90
728x90

클래스 22

C++] RTTI(Run-Time Type Information)

RTTI(Run-Time Type Information)실행 중 객체의 타입과 관련된 정보를 알아내는 기법실행 중 포인터가 가리키는 객체의 실제 타입을 알아야 하는 경우,클래스가 상속 관계에 있을 때 포인터가 가리키는 객체가 파생클래스의 객체인지기본클래스의 객체인지 판단해야 하는 경우, RTTI 기법을 이용해 알아낼 수 있다.RTTI 활용을 위해서는 typeinfo 헤더를 포함시켜야 함. type_info 클래스는 typeid 연산자에 의해 반환되는 정보로,타입 이름과 같은 타입에 관한 정보를 가진 클래스임 123456789class type_info{public: bool operator==(const type_info& rhs); bool operator!=(const type_info& rhs); ..

C#] 하위 디렉토리 내용 검색하기

C#] 하위 디렉토리 내용 검색하기 어떤 디렉토리가 있으면 그 디렉토리 내의 하위 디렉토리를 포함한모든 파일 정보나 디렉토리 정보까지 검색하여 사용해야 하는 일이 있다. 흔히 파일 정보 검색은 Directory클래스나 DirectoryInfo 클래스에서 정의된GetFiles나 GetDirectories를 등을 사용하는데어떤 속성값도 없이 경로만 지정해준 상태에서 목록을 반환하게 하면,선택한 경로 내의 하위 디렉토리에는 접근하지 않는 문제가 발생한다. 모든 하위 디렉토리의 파일 혹은 디렉토리 목록을 조회하는 것이 목적이면메서드의 파라미터에 검색 옵션을 추가해주면 된다. 12Di = new DirectoryInfo(searchPath);FileInfo[] file = Di.GetFiles("*",Search..

C#] System.Net.Sockets 네임스페이스

### System.Net.Sockets 네임스페이스 네트워크에 대한 엑세스를 엄격하게 제어해야하는 개발자를 위해서Windows Socket(Winsock) 관련 인터페이스를 제공하는 네임스페이스.해당 네임스페이스 하위의 TcpClient, TcpListener 및 UdpClient 클래스는TCP/UDP 방식으로 인터넷에 연결하기 위한 자세한 정보를 캡슐화하여네트워크 서비스에 대한 클라이언트 연결 제공 및 클라이언트에서 연결을 수신하는 서비스를 제공함. ## NetworkStream 클래스 네트워크 액세스를 위한 내부 데이터 스트림 제공.NetworkStream을 만들려면 연결된 Socket을 제공해야 함.제공된 Socket에 대해 NetworkStream이 가지는 FileAccess 사용 권한을 정지할..

C#] 구조체(Structure)

### 구조체(Structure) 참조 형식이 클래스와는 달리 구조체는 값 형식임.구조체는 상속을 지원하지 않음.(System.ValueType을 암묵적으로 상속한다는 점은 제외)구조체는 클래스가 지원하는 요소 중,매개 변수가 없는 생성자, 필드 초기화, 종료자, 가상 멤버와 보호된 멤버를 제외한 모든 요소를 지원함. 구조체는 값 형식 의미론이 바람직한 경우에 적합하며, 일례로 커스텀 수치 형식이 있음.수치 형식에서는 배정 시 참조가 아니라 값을 복사하는 것이 더 자연스럽기 때문임.구조체는 값 형식이기 때문에, 인스턴스화 시 힙에 객체를 할당할 필요가 없어 한 형식의 인스턴스를 많이 생성하는 경우 구조체가 더 효율적일 수 있음. ## 구조체 생성 의미론 구조체에는 매개 변수 없는 생성자가 암묵적으로 존재..

DataStructure] C++ 연결 리스트(Single Linked List)

2학년 1학기(벌써 작년이다)에 필자는 C언어로 자료구조론을 배운 적이 있다.당시에는 C언어로 모든 것을 작성했었다.자료구조도 복습하고, C++ 연습하는 겸,C++로 자료구조들을 구현하는 시도를 하고 있다.오늘은 그 첫번째 시도로 단일 연결 리스트(혹은 단순 연결 리스트;Single Linked List)를 만들어봤다. head, tail, 중간 삽입이 모두 가능하고,삭제하는 건 head에서만 이뤄지도록 했다.그냥 구현에 초점을 둬서 완벽한 예외처리나, template을 활용하거나 하지는 않았지만,근시일내에 그런 걸 다 집어넣고 다시 한 번 짤 생각이다. (왜 remove만 핫핑크로 하이라이팅되는 거지?...) #include using namespace std; class Node { friend cl..

C#] 인덱서(Indexer)

인덱서(Indexer) 인덱서는 값들의 목록이나 사전을 캡슐화하는 클래스나 구조체에서 특정값에 자연스러운 구문으로 접근하기 위한 기능을 제공하는 멤버Property와 유사하나, 이름이 아니라 색인 변수를 통해 접근함인덱서를 사용하는 구문은 배열 사용 구문과 유사하나, 정수 이외 형식도 색인으로 사용 가능적용할 수 있는 수정자는 property의 것들과 동일함 string 클래스에는 문자열을 구성하는 특정 문자의 char 값에 int 색인을 통해서만 접근할 수 있게 하는 인덱서가 존재 class IndexerText { string[] test = "This is Text Code".Split(); public string this [int wordNum] // Indexer { get { return w..

C#] 인스턴스 생성자

인스턴스 생성자 클래스나 구조체의 인스턴스를 초기화하는 함수 멤버생성자의 정의는 메서드와 유사하나, 메서드 이름과 반환 형식이 생성자가 속한 형식의 이름을 따름 - 인스턴스 생성자에 적용할 수 있는 수정자 접근 수정자public internal private protected비관리 코드 수정자unsafe extern - 중복적재 중복적재한 경우 this 키워드를 이용해 다른 생성자를 호출해 중복을 피함한 생성자가 다른 생성자를 호출할 경우, 호출된 생성자가 선행적으로 실행됨. 다른 생성자에 표현식을 넘겨주는 것도 가능하나,this를 통해 어떤 인스턴스 메서드를 호출할 수 없기 때문에표현식 자체에서 this 참조는 사용할 수 없음.정적 메서드는 호출이 가능함. 해당 제약은, 생성자의 현재 단계에서 객체가 ..

C#] namespace 규칙

1. 범위 바깥 namespace에서 선언된 name은 안쪽의 namespace에서 name을 한정하지 않고 사용 가능함. namespace Outer { class ClassEx1 {} namespace Inner { class ClassEx2 : ClassEx1 {} } } namespace 계통 구조의 다른 가지에 있는 형식을 지칭하는 경우,부분적으로 한정된 name을 사용할 수 있음. namespace Outer { namespace InnerOne { class Base1 {} } namespace InnerTwo { class Base2 : InnerOne.Base1{} } } 2. 숨기기 안쪽 namespace와 바깥쪽 namespace에 같은 name이 있는 경우 안쪽 name으로 간주됨...

Python] 클래스 기초

파이썬에서 클래스의 기본 선언 구조 123456class Example: def __init__(self,param): def function(param): class classExample(Example): def func(param):cs 클래스는 예약어 class 뒤에 클래스명을 지정해 선언함 class Example: 생성자는 __init__() 함수로, 클래스 생성 시 호출되며,생성자는 클래스 자신을 가리키는 인자 self가 반드시 들어가야 함.특별한 초기화 작업이 필요 없는 경우 생략 가능. def __init__(self, param): 클래스 내부에는 함수 선언 가능. def function(param): 다른 클래스를 상속하려면 클래스 선언 시, 인자로 상속받을 클래스명을 넣어줌. cla..

Unity, C#] 중요 함수

Awake 스크립트 실행 시 한 번만 호출게임 상태 값, 변수 초기화에 사용함Start 함수 호출 이전에 맨 먼저 호출됨비활성화 상태여도 실행됨코루틴으로 실행 불가능 Start Update 함수가 호출되기 전 한 번만 호출스크립트가 활성화되어 있어야 실행다른 스크립트의 모든 Awake가 모두 다 실행된 이후 실행코루틴으로 실행 가능 Update 프레임마다 호출되는 함수, 게임의 핵심 로직 작성스크립트 활성화되어 있어야 실행 LateUpdate 모든 Update 호출 후 한 번씩 호출순차적으로 실행할 로직에 사용카메라 이동 로직에 주로 사용스크립트가 활성화되어 있어야 실행 FixedUpdate 물리 엔진을 사용할 경우, 일정 시간 힘을 가할 때 사용발생 주기 일정 OnEnable 게임오브젝트 혹은 스크립트..

728x90