C++ class..

C++ class에서 가장 중요한 요소가 몇 가지 있는데, 적어보자면

일반적으로 내부적으로 어떤 상태 변수를 가지고 있는 모듈을 만들자면 (HDL의 entity처럼) constructor는 상태 변수를 초기화하는 정도로 기술하고 대개 함수의 기능에 초점을 맞추는 반면, class의 instance를 복사한다거나 vector로 flexible하게 늘린다거나 하면 constructor와 copy constructor를 잘 정의하는 게 중요하다.

간단한 예를 들면 다음과 같다.

class aaa
{
public:
    aaa() { a=0; }
    aaa(const aaa &_a) { a=_a.a; }
    aaa &operator=(const aaa &_a)
    {
        a=_a.a;
        return *this;
    }
private:
    int a;
};

assignment를 해서 우변에 있는 걸을 좌변으로 복사하자면 copy constructor가 잘 정의 되어있어야 되고, 아예 declaration을 할 때 내부 값을 정해서 instantiation하겠다면 copy constructor를 정의해놔야 한다.

이 예는 매우 간단한 예인데, 이를테면 template class로 이걸 선언하자면 template으로 확장될 class들은 자체적으로 constructor/copy constructor가 완벽하게 기술되어있어야 아무런 문제없이 계속 확장을 해 나갈 수가 있다.

그렇지 않으면 여러 가지 compilation error에 봉착하게 되고 잘 동작하지도 않게 된다.

인터넷을 열심히 뒤져봐도 복잡한 문제를 잘 풀어낸 예제는 나오지 않는다. 다시 말해서 스스로 열심히 헤딩해서 자신만의 해답을 찾는 방법 밖엔 없단 얘기다.