250x250
Notice
Recent Posts
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
관리 메뉴

일상 코딩

[C++/8.4] 생성자 멤버 초기화 본문

C++/따배C++ 08강 객체지향 기초

[C++/8.4] 생성자 멤버 초기화

polarcompass 2021. 10. 21. 02:17
728x90
#include<iostream>
using namespace std;

class B
{
private:
     int m_b;

public:
    B(const int& m_b_in)
        : m_b(m_b_in)
    {}
};

class Something
{
private:
    int    m_i = 100; 
    double m_d = 100.0;
    char   m_c = 'F';
    int    m_arr[5] = {100, 200, 300, 400, 500};
    B      m_b{ 1024 };
    // 여기서 초기화를 하더라도 생성자가 우선이라 생성자에서 대입한 값으로 출력됨.
public:
    Something()
        // '{}'를 쓰면 자동으로 형변환이 안되어 좀 더 엄격해진다.
        : m_i{1}, m_d{3.14}, m_c{'a'}, 
          m_arr{1,2,3,4,5}, m_b(m_i - 1)
    {
        m_i *= 3;
        m_d *= 3.0;
        m_c += 3;
    }

    void print()
    {
        cout << m_i << " " << m_d << " " << m_c << endl;
        for( auto& e: m_arr)
            cout << e << " ";
        cout << endl;
    }
};

int main(int argc, char const *argv[])
{
    Something som;
    som.print();

    return 0;
}
728x90