초기화를 할 때 쓰이는 :(colon)에 대한 설명이다.

용도

  1. 상수를 초기화할 때
  2. 상속 시 부모객체의 생성자를 호출하고 싶을 때

써야하는 경우

  1. 클래스가 레퍼런스를 멤버로 가질 때
  2. non static const 멤버가 있을 때
  3. default 생성자가 있을 때
  4. base class를 초기화할 때
  5. 생성자 파라미터의 이름이 데이터멤버랑 같을 때(이 경우는 this를 사용하여 해결 가능)
class MyClass
{
    public:
        int &i; //레퍼런스 멤버. 초기화 리스트를 써야 함
        int b;
        //Non static const 멤버. 초기화 리스트를 써야 함
        const int k;  

    //생성자 파라미터의 이름이 데이터 멤버랑 같음. 초기화 리스트를 쓸수 있음(선택 가능)
    MyClass(int a, int b, int c):i(a),b(b),k(c)
    {
        /*
        초기화 리스트를 쓰고 싶지 않은 경우
        this->a = a
        같이 써야 함
        */
    }
};

class MyClass2:public MyClass //MyClass를 상속받는 MyClass2 생성
{
    public:
        int p;
        int q;
        //base class인 MyClass가 default생성자가 없기 때문에 무조건 초기화 리스트에서 초기화해줘야 함
        MyClass2(int x,int y,int z,int l,int m):MyClass(x,y,z),p(l),q(m)
        {
        }
};

/*
출처 : 
<https://hashcode.co.kr/questions/629/%EC%83%9D%EC%84%B1%EC%9E%90%EC%97%90%EC%84%9C-%EC%BD%9C%EB%A1%A0%EC%9D%80-%EC%99%9C-%EC%93%B0%EB%8A%94-%EA%B1%B4%EA%B0%80%EC%9A%94>
*/