Lua Script의 특징 장점 직접적으로 인터프리트되지 않고, 바이트 코드로 컴파일되어 루아 가상 머신에서 실행 된다. 문법 배우는데 어려움 없음. 즉 문법이 간단하다. 레지스터 기반의 가상머신은 값들을 과다하게 복사하는 것을 방지, 함수를 구성하는 명령어를 줄일 수 있다. 동종 스크립트 언어 중에서 최강의 속도와 효율을 자랑한다. table 이라는 강력한 연관배열을 지원한다. 데이터 타입이 존재하지만 사용시에는 숫자, 문자열 정도만 구분하면 되며 왠만한 경우는 자동으로 변환을 수행한다. 단점 스크립트 언어라면 모두가 가지고 있는 가비지 콜렉션이 존재. 즉 메모리(사용하지 않거나 제한이 있을경우)를 자동으로 해제함. = 직접적인 메모리 관리의 어려움으로 인해 성능저하 발생할수도. 가벼운 만큼 지원하는 라이브러리가 적다. 루아에서의 변수는 선언이 필요 X ex) count = 0 (variable name) = 값 일반적으로 C/C++ 에서는 변수를 사용하려면 변수의 형(type) 을 선언해주고 사용. ex) int nCount = 0; (type) (variable name) = (type에 맞는 값); 그러한 관점에서 루아에서는 이러한 변수의 형 선언이 필요하지 않다 . 기본적인 변수 선언 후 +연산 출력 등등.. ✋ 주의사항 - 변수선언시 특수문자는 오직 "_" Underbar 만 가능 아래 출력창 보면 정상적으로 출력되는것이 보임. 위와 같이 변수를 사용한다면 전역 (Global)변수로 사용. 전역변수의 단점 - 프로그램을 종료하지 않는 한 영원히 메모리 공간을 점유 함. 잠깐 사용하고 말 변수라면 앞에 local 을 붙여 사용한다면 메모리 관리에 용이함. Freesh (Free + Finish) - 맺음말 전역(Global)변수는 따로 모아서 관리하면 좋을듯.
C++에서 필수 매개변수가 하나만 있는 생성자는 암시적 변환 함수 로 간주되어 매개변수 유형을 클래스 유형으로 변환 합니다. 생성자 Buffer(int size)가 버퍼 크기를 바이트 단위로 사용 하는 버퍼 클래스가 있는 경우 컴파일러가 자동 으로 ( int size )를 Buffers 로 바꾸는 것을 원하지 않을 것입니다. 이를 방지하기 위해 explicit 키워드를 사용 하여 생성자를 선언합니다 . class Buffer { explicit Buffer(int size); } void useBuffer(Buffer& buf); useBuffer(4); //error. explicit 키워드를 사용한다면 컴파일 오류 가 발생하므로 임시 Buffer객체를 전달 하려면 명시적으로 전달 해야 합니다 . useBuffer(Buffer(4)); // <- 생성자에 맞게 명확하게 사용. 요약 explicit 키워드 없이 사용한다면 사용자가 원치 않은 형변환 이 일어나는 등 예기치 않은 버그 가 발생할 수 있기 때문에 애매한 상황 이라면 explicit 키워드를 사용하여 예방 을 해야 한다.
댓글
댓글 쓰기