본문 바로가기

전체 글142

c++의 static 변수에 대하여 static 변수에 대하여1. Static일단 전역변수, 하지만 접근에 지역적인 제한이 있다.사용하려면 헤더가 아닌 실행부(cpp)에서 초기화를 해주어야 한다.OOP의 캡슐화를 지키면서 전역처럼 쓸수 있는 방법2. class의 비밀class의 인스턴스를 생성하면 멤버변수들만이 독립적인 메모리에 할당되며 멤버 함수는 기존 클래스에 선언된 함수를 호출하여 사용한다.그래서 클래스의 맴버함수들은 기본적으로 this를 인자로 받는다. 그리고 그걸 숨긴다.void Point::printAge(){ printf("(%d, %d)", m_X , m_Y); } //이런 멤버함수는 모든 클래스가 공유하기 때문에 원래 컴파일러는 이 함수를 이렇게 번역한다. void Point::printAge(Point& this){ pr.. 2015. 3. 10.
c++의 가상함수 가상함수1. 가상함수 기본 개념집고 넘어가는 다형성 : 자식은 부모의 역할을 할 수 있는데, 부모는 자식의 역할을 할 수 없다.포인터 타입의 양면성 : 포인터가 가르치는 객체의 타입(동적 타입), 포인터가 선언될 당시의 타입(정적 타입)int* a; char b = 'c'; a = &b; //a의 정적 타입은 int, a의 동적 타입은 char객체 포인터에다 '기본' 함수를 호출하면 정적 타입에 명시된 함수가 호출된다. (정적 바인딩)객체 포인터에다 '가상' 함수를 호출하면 동적 타입에 명시된 함수가 호출된다. (동적 바인딩)동적 바인딩을 구현하는 방식은 컴파일러마다 다르지만 일반적으로 vTable으로 구현한다.virtual함수를 생성하면 그 클래스 이하 모든 자식 클래스에게 vPtr을 멤버로 (몰래)생.. 2015. 3. 10.
cocos2d-x 의 기본 구조 1. Nodecocos2d-x의 기본 단위거의 모든 객체들은 이 Node클래스를 상속받는다. 이것만 잘 알아도 cocos2d-x의 많은 부분을 알수 있다.http://www.cocos2d-x.org/reference/native-cpp/V3.0alpha0/d3/d82/classcocos2d_1_1_node.htmlNode의 멤버들..-position : 위치 값,-scale : 크기 배율값,-rotation : 회전 각도,-anchor point : 앵커 포인터(위치값의 기준 점을 설정 0~1까지 float),-size : width, height,-visible : 보이는지 여부,-z-order : 출력시 위에 보이느냐 아래 보이느냐를 결정하는 수치node->setPosition(Point(0, 0)).. 2015. 3. 10.
Modern Effective C++ Item 6 : auto로 안되면 명타초 쓰자 tem 6 : auto가 안되면 명타초를 쓰자.auto의 빈틈 : 특수한 벡터 std::vectorstd::vector는 확장가능한 배열 템플릿 클래스로 임의의 타입 T에 대한 연속적인 배열을 만들어준다. 그런데 T가 bool 인 경우 메모리 낭비를 막기 위하여 특수하게 다른 형태로 구현된다. std::vector은 각 원소들을 하나의 비트로 표현하고 연속된 비트로 bool의 배열을 만들어 준다.일반적인 벡터 std::vector의 operator[]의 리턴 형식은 T&이다. 그러나 C++ 에서 하나의 비트에 대한 참조가 불가능하기 때문에 일반적인 방법으로는 배열의 원소에 접근하는 것이 어렵다. 이 해결을 위해 마치 bool&처럼 작동하는 프록시 오브젝트 std::vector::reference가 사용된.. 2015. 3. 10.