아마도 표준은 아닐거라고 생각하고 2003의 지원여부는 잘 모름-ㅅ-;
이미 표준이 아니어도 vc2005의 강력한 기능이 너무나도 유용한 경우는 생까주기로 하셨슴.
override
꽤 갈망해왔던 키워드이다.
base class에 있는 virtual을 상속받아서 쓰는경우에 base class에 있는 함수를 바꾸고 drived class 의 함수를 바꾸지 않았을 때 오작동하는 잡기 쉽지 않은 버그가 컴파일할때 에러가 나주면 얼마나 감사할까... 할 때 쓰시면 된다.
struct I1 {
virtual void f();
};
struct X : public I1 {
virtual void f() override {} // OK
virtual void f2() override {} // error C3668: 'X::f2' : method with override specifier 'override' did not override any base class methods
};
abstract
virtual foo() = 0;
대신에
virtual foo() abstract;
로 쓸 수 있다.
함수에서는 별 필요 없지만 클래스에서는 강력하게 사용할 수 있다.
class X abstract {};
int main() {
X * MyX = new X; // C3622 cannot instantiate abstract class
}
이런식으로 class통째로 abstract기능을 걸 수 있다.
인터페이스 class를 만들 때 유용할 듯...이라고 생각할 수 있지만 인터페이스 클래스는 __interface키워드가 있으므로 걍 추상 클래스에만 사용하쟈...
사실 인터페이스용으로 사용해도 내용으로는 구분이 안되는 내용이지만 알아서 구분해 쓰쟈
__is_abstract(type) 으로 컴파일 타임 체크 가능
__interface
__interface I1 {
virtual void f();
};
위의 abstrace키워드로 선언한 class와의 차이
멤버변수를 가질 수 없다.
static류를 사용할 수 없다.
생성자, 파괴자, 오퍼레이터 오버로딩 불가(엑-.ㅜ 인터페이스 클래스에서 이거 꽤 쓰는데..;;)
인터페이스는 상속 가능, base class는 상속 안됨
public pure virtual함수만 가질 수 있음
장점은 virtual table을 차지하지 않음
sealed
더이상 오버라이딩 못하게 할 때 사용한다.
함수와 클래스 둘 다 사용가능
__is_sealed (type) 으로 컴파일 타임 체크 가능
.끝.
native 기준이고 clr에서만 사용가능한건 적지 않았음
위에 몇 개 나왔지만 __is_abstract같은 컴파일 타임에 사용가능한 TypeTraits가 꽤 있다.
특정 클래스가 base클래스를 상속받았는지를 체크하는것도 있고(clr에서만 되지만)
__has_copy(type)나 __has_assign(type)같은
native에서 쓸만한것도 꽤 있다.
근데 사실 TypeTraits는 필요한건 native지원안하면 loki를 써버리면 그만이라 헹~
사실 공개 UI모듈들도 꽤 있지만 대부분 UI를 표현하는쪽으로 초점이 맞춰져 있는게 사실이고 (제대로 살펴보지도 않았지만)
국내에서도 전체적인 개발기술들에 대해서 갖추고 있는거에 비해 모듈이나 엔진수준의 내용공개가 너무 안되어 있는것도 사실이고 (먹고 살기 바쁘고 보통은 회사에 종속되어 있어서..려나)
특히 UI나 Effect쪽은 너무 자료가 없기도 하고 (이건 해외쪽도 별로 자료가 없지만)
나름대로 UI쪽은 한가닥 한다고 생각하고 있고 (혼자만의 생각이지만)
하는것들이 있어서 전부터 공개소스로 UI모듈을 개발해 보면 어떨까.. 하는 생각이 있었다. ( 진짜로 할일은 없겠지만 )
생각해보면 실제로 진행을 한다라고 해도 참여할 개발자는 없을테니 (있어도 안받을지도)
KLDP에 프로젝트를 만들기도 머하고 (그쪽에서 안받아줄지도-_-)
만들어 논다고 우리나라 사람들한테 GPL같은걸 지켜라.. 하는 것도 무리고 (지키는 사람도 꽤 있긴 하지만)
문서화나 주석을 달것도 아니고 요구사항을 반영해줄것도 아니고 질문에 답변을 할것도 아닌지라...
귀찮아만 질거 같다.. 에헹~
혹시 하게 되면 모듈명은 쑥UI...즉 SUI가 되려나.. 왠지 SUIGUI의 냄새가-_-;;
ps. 생각해보니 그러려면 UI쪽에서 사용하는 xml라이브러리 기타등등부터 다 공개화를 해야 하나-ㅅ-;;;
This keyword can only be applied to non-static and non-const data members of a class. If a data member is declared mutable, then it is legal to assign a value to this data member from a const member function.
라고 msdn에 나와있다.
const 멤버함수에서 수정할 수 있단다.
보고나니 아...이거였지...라는 생각이 난다-_-;
크리티컬섹션거는거때매 const를 붙이지 못해서 불만을 뿜어내고 있었는데..
흠흠..
이런 변수 키워드들에 대해 한번 찾아봐야지..하고 계속 미루고 있었는데
이 게으름증이란..헹~
ps. volatile은 내용은 대충 알것도 같은데 어떤 상황에 써야할지는 잘 모르겠다-.ㅜ
요즘 IR이다 우수게임지원에 낸다.....해서..
한참 밀려있던 툴 기능 개선 및 메뉴얼 작업들을 하고 있다.
스크린 캡쳐해서 버튼에 하나하나 번호표도 달아주고 ( 이게 시간 젤 많이 걸린다-.ㅜ)
하나하나 찾아서 설명을 달아주다 보니...
만들어놓고 머하는 기능인지 까먹고 있던것들도 다시 살아나고..ㅎㅎ
사실 개발기간 중에는 툴과 기술테스트(구현테스트가 아닌 아트팀과의 협의용), 개발 프로세스의 자동화, 게임의 기반마련 등이 가장 중요한 내용이라고 생각되지만..
항상 눈에 보이는 게 있어야 하는 상황 때문에 잘 진행되기는 힘들다.
툴에 밀린 기능들을 하나하나 개선하고 추가하다 보면...
그 외의 내용들은 참 의미없다는 생각들이 가끔 든다.
툴 인터페이스가 편해지고 편한 기능들이나 자동화기능들이 추가되면
그래픽팀에서 2주 걸릴게 1주로 줄고, 하루로 줄기도 하는데..
개발기간동안에 이거보다 더 중요한게 있을까...
온라인 게임은 컨텐츠의 질도 중요하지만 컨텐츠의 추가 속도도 중요하다고 생각된다.
서비스시에 빠른 개발로 많은 컨텐츠들을 지속적으로 추가해 줄 수 있도록 하는게 개발기간동안 해야하는 일이라고 생각한다.
개발기간동안에 지금 눈에 보이는걸 만드는게 과연 남는것일까...흐으음..
어쨋건 새삼스럽게 느끼는건 나는 다른 프로그래머들이 보통 싫어하는 노가다 부분을 가장 재밌어 하는 이상한 성격이라는거다-_-; ( 무..물론 늘 노가다만 하면 곤란하다..; )