본문 바로가기

전체 글332

printf 출력 형식 %d : int 값을 부호있는 10진수로 출력. %i : int 값을 부호있는 10진수로 출력. %u : int 값을 부호없는 10진수로 출력. %X : int 값을 부호없는 16진수로 출력. '0' ~ '9' / 'A' ~ 'F' %x : int 값을 부호없는 16진수로 출력. '0' ~ '9' / 'a' ~ 'f' %o : int 값을 부호없는 8진수로 출력. '0' ~ '9' / 'A' ~ 'F' %p : 포인터 값을 16진수로 출력. %s : 문자열 출력. %c : int 값을 문자로 출력. %C : int 값을 문자로 출력. %f : double 값을 소수로 출력. (12.345678) %e : double 값을 지수로 출력. (12.34567e+001) %E : double 값을 지수로 출력... 2023. 1. 6.
(C++11) chrono OS 독립적으로 정밀한 시간 측정 가능. 나노초 단위까지 측정 가능. 특정 연상 전후로 time_point를 측정하고, time_point 차이를 이용하여 실제 연산 시간을 계산한다. *프로그램 동작 시간을 제대로 측정하려면 VisualStudio 에서 Release 모드로 빌드해야 한다. 에 정의되어 있음. auto start = chrono::system_clock::now(); // code auto end = chrono::system_clock::now(); auto msec = chrono::duration(end - start).count() * 1000; cout 2023. 1. 4.
메모리 관리 언리얼에선 UObject 클래스로부터 파생된 클래스와 액터의 메모리를 자동으로 관리해준다. 수집된 잔여 메모리(GC)를 시스템에 반환하지 않고 풀링하고, 새로운 메모리를 필요로 할 때 메모리 풀에서 먼저 가져온다. UObject 에서 파생되지 않은 클래스를 작성할 땐 TSharedPtr, TWeakPtr을 사용하자. UObject 에서 포인터는 UPROPERTY를 추가해서 관리하기 쉽도록 하자. 메모리 생성 UObject를 생성할 때는 NewObject 를 사용하자. Actor를 생성할 때는 SpawnActor 를 사용하자. 메모리 해제 UObject 강제 메모리 해제 : UObject::ConditionalBeginDestroy() 함수 호출.(이 후 BeginDestory/FinishDestory 가.. 2022. 12. 26.
Class extention struct Grade { var letter: Character var points: Double var credits: Double } class Person { var firstName: String var lastName: String init(firstName: String, lastName: String) { self.firstName = firstName self.lastName = lastName } func printMyName() { print("My name is \(firstName) \(lastName)") } } class Student: Person { var grades: [Grade] = [] } let jay = Person(firstName: "Jay", lastName.. 2022. 11. 23.
protocol //protocol: 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 정의.. protocol FirstProtocol { var name: String { get set }// 읽기, 쓰기가 동시에 가능한 프로퍼티는 { get set }을 써주어야 함 var age: Int { get }// 읽기만 가능한 프로퍼티 } protocol SecondProtocol { static var someTypeProperty: Int { get set }// 타입프로퍼티를 요구하려면 static을 선언해줘야 함 func someTypeMethod() } // 여러가지 프로토콜을 동시에 채택 가능. 프로토콜에서 요구하는 프로퍼티, 메소드를 정의해주어야함 (struct/class) ProtocolClas.. 2022. 11. 16.
Structure import UIKit struct Person { var firstName: String { // 값이 바뀌기 전 willSet { print("willSet: \(firstName) --> \(newValue)") } // 값이 바뀐 후 didSet { print("didSet: \(oldValue) --> \(firstName)") } } var lastName: String // 변수가 사용되기 전에는 메모리에 올라가지 않는다. 쓰레드에서 애러날 수 있음. lazy var isPopular: Bool = { if fullName == "Jay Park" { return true } else { return false } }() var fullName:String { get { return "\(f.. 2022. 11. 11.