주제 :FString, 멤버함수
FString
FString을 쓸때 FString을 쓸때는 "*"를 붙이라고 한다.
FSTring MyString = "My String Value";
UE_LOG(LogTemp, Display, TEXT("Here's My String: %s"), *MyStirng);
이유는 자세하게 설명 안해줬지만 궁금하기에 찾아봤다.(포인터 개념인가?)
FString은 언리얼 엔진에서 문자열을 다루기 위한 클래스
언리얼 엔진의 로그시스템이나 특정 API에서는 C 형태의 문자열이 필요할때가 있음(성능,호환성 문제)
그중 하나인 UE_LOG가 C 스타일 문자열이 필요한 매크로 예시 중 하나
그래서 "*"이 왜 필요하냐? 바로 "*"이 FString 객체를 TCHAR 배열(C 스타일 문자열)로 변환해줌
참고)
TCHAR는 뭐냐?
'UNICODE' 매크로가 정의 되어있는 경우 : TCHAR => whar_t
'UNICODE' 매크로가 정의 안되어 경우 : TCHAR => char
char : 1바이트 문자 / ASCII or 멀티바이트 문자열 적합
TCHAR : 2바이트 이상 문자 / 유니코드와 멀티바이트 모두 지원
언리얼 엔진은 기본적으로 유니코드 사용하므로 TCHAR 사용
TCHAR이 큰개념 / UNICODE 매크로 정의 유무에 따라 whar_t 랑 char 갈림 / TCHAR가 매크로 같은 개념 / 대부분 TCHAR=whar_t 로 많이쓰임
멤버함수
:: => 스코프 지정 연산자 (스코프 : 변수,함수,객체 등 접근가능한 범위)
int data = 0; // 전역 변수
int main()
{
int data = 0; // 지역 변수
data = 5; // 지역 변수 data에 5가 대입!!
return 0;
}
이런경우(지금 이해하기로는)
main안에서 일반함수를 호출하고 싶으면
::data
바깥에서 main안에 함수를 호출하고싶으면
main::data
이렇게 불러오면 됨.(참조 : https://blog.naver.com/tipsware/221056751962)
참고)
java와 같이 객체지향 함수를 알아볼수 있었던곳이
헤더(.h)파일에서 public,protected,private 지정해서 함수를 만들어줌
