MyAlbum   Pet
DirectX   openGL   Java   C/C++   STL   C#   Python   Window   ActiveX   SE & Refactoring   Game   Unicode   googleDesktop   Network   Database   Web   php   asp   asp.net   Library   QT   wxWidget   Something to read  
ToDo
zelon's WebAlbum
Google Tools
Google Naver map
ToRearrange
OpenOffice.org
Eclipse
Check W3 validator
SEand Refactoring
e i R f
Anonymous

목차 #


Contents

1 목차
2 코드의 특정 부분을 네트웍으로 옮길 때
3 const 붙이기
3.1 목적
3.2 특정 상황에 대한 해결책
4 link

2 코드의 특정 부분을 네트웍으로 옮길 때 #

  • 나누기 쉽게 인터페이스등을 조절하는 등, 리팩토링을 한다.
  • 먼저 내부적으로 2개로 나눈다. 이 때 비동기 방식으로 호출될 수 있게 나눈다.(바로 리턴되지 않는다!!!)
  • 나누어진 것 중 네트웍 쪽을 서버에 올리고, 남은 쪽은 Wrapping 해서 함수를 호출한다.


3 const 붙이기 #


3.1 목적 #

클래스의 인터페이스를 통한 커뮤니케이션에서 그 의도를 정확히 하고, 특히 레퍼런스를 받아갔을 때 받아간 인스턴스의 내용(Data) 을 고치지 않았음을 확실히 하기 위해 const 를 이용한다. 혹시나 모를 오타나 잘못된 사용을 컴파일러 차원에서 방지할 수 있다. 그리고 라이브러리등을 만들 때 그 의도를 정확히 할 수 있으며, 내부 자료를 보호한다.

3.2 특정 상황에 대한 해결책 #


  • 반환값이 클래스의 const & 이면, 그 함수를 호출할 때도 ZelonClass & aClass = func(); 의 형식이 되어야한다.

  • 반환값을 클래스의 const & 로 받고, 그 멤버 함수를 호출할 때는 호출하는 멤버 함수가 모두 const Function 이어야한다.

  • STL 의 iterator 는 const_iterator 를 이용한다.

  • map 이나 vector 에서의 operator[] 는 find() 를 이용한다. 특히 map 에서는 find()->second 를 이용한다.

  • 어쩔 수 없이 안되는 경우에는 Warpping Function 을 만들어서 const_cast<> 를 이용한다.
const & string ZelonClass::toString()
{
    ZelonClass * pThis = const_cast<ZelonClass *>(this);
    return pThis->_toString();
}

// 이 함수가 내부적으로 어쩔 수 없이 멤버 변수를 수정한다.
const & string ZelonClass::_toString() const { .... }


4 link #