목록개발 (5)
또레
C#의 String을 활용하며, String이 비어있는지 혹은 값이 지정되어있지 않은지를 확인하고 싶을 때가 왕왕 있다. (C++을 사용하는) 언리얼 환경에서는 std::string이 null일 수 없기 때문에(클래스 타입의 객체이기 때문에), 아래와 같이 빈 문자열인지 검사하는 메서드를 통해 확인거나 길이 자체를 검사하면 됐었다.// myString is std::stringmyString.Empty(); myString.length() == 0;// myFString is FStringmyFString.IsEmpty(); myFString.Length() == 0; 그러나 C#에서는 String이 참조타입이기 때문 (C++의 string*처럼)에 null이 될 수 있다. 따라서 null Che..
갑작스레 유니티를 하게 되면서 C#을 공부하게 되었다. 책을 보는게 가장 좋겠지만, 당장은 유니티를 공부하면서 함께 익히게 된 내용에 대해 저장해두려 한다. 틀린 내용이 많을 수도 있겠지만, 최대한 찾아보고 적어봐야겠다 싶다.
스마트 포인터(Smart Pointer) 스마트 포인터란 C++에서 동적으로 할당된 메모리를 관리하는데 사용되는 포인터의 래퍼 클래스이다. 스마트 포인터는 시스템이 종료될 때 자동으로 메모리를 해제함으로 프로그램의 안정성을 높여준다. 스마트 포인터의 종류 std::unique_ptr 한 객체에 대한 소유권을 가지며, 해당 객체를 다른 스마트 포인터와 공유할 수 없다. 복사 및 할당이 불가능하며, 소유권을 이전(std::move)하는 것만 가능하다. std::shared_ptr 여러 스마트 포인터가 같은 객체를 공유할 수 있도록 하는 스마트 포인터이다. 내부적으로는 참조 횟수를 사용하여 객체의 소유권을 다룬다. 모든 std::shared_ptr이 소멸되면(참조 횟수가 0이 되면) 객체가 자동으로 메모리에서..
함수 오버로딩(Function Overloading) 오버로딩은 C++의 다형성을 활용하는 기법이며, 함수 중복 정의를 의미한다. 조금 풀어서 쓰자면, 동일한 이름의 함수를 여러 번 정의하여 매개변수의 개수나 타입에 따라 다르게 동작하도록 하는 기능을 말한다. 오버로딩 된 함수 호출 시, 어떤 함수를 호출할 것인지 결정하는 것은 함수 시그니처 (Function Signature)이다. 함수 시그니처는 함수의 원형에 명시되는 매개변수 리스트이다. 즉 함수 시그니처는 함수의 이름과 매개변수의 타입, 개수, 순서로 결정된다. * 함수 시그니처 예시 void Funtion(int x, float y) { ... } // 위의 함수 시그니처는 다음과 같다. // 이름 : Funtion // 매개변수 타입 및 순서..
C와 C++의 차이 C와 C++의 가장 큰 차이는 절차지향(Procedural)와 객체지향(Object-Oriented)에 있다. 패러다임(절차 지향 vs 객체 지향) C는 절차 지향 프로그래밍 언어이다. C에서는 데이터와 관련된 함수를 따로 정의하고, 이들을 호출하여 사용한다. C++은 C에 객체 지향 프로그래밍의 개념을 도입한 언어이다. C++은 클래스와 객체를 사용하여 데이터와 해당 데이터를 다루는 함수를 하나의 단위로 묶어 사용한다. * 클래스와 객체의 차이는? 클래스는 설계도, 객체는 클래스라는 설계도로 만들어진 물품으로 예시를 들 수 있다. 정확한 정의는 아래와 같다. Class : 사용자 정의 데이터 형식으로, 멤버 변수(속성)와 멤버 함수(동작)을 포함할 수 있다. Object : 클래스의..