티스토리 뷰

생성자의 Member Initializer List

 

#include<iostream>

using namespace std;

class Something
{
	private:
	int m_i;
	double m_d;
	char m_c;
	
	public:
	Something()
		: m_i(1), m_d(3.14), m_c('a')
	{
		// m_i = 1;
		// m_d = 3.14;
		// m_c = 'a';
	}
	
	void print()
	{
		cout << m_i << " " << m_d << " " << m_c << endl;
	}
};

int main()
{
	Something s;
	s.print();
	
	return 0;
}

// 1 3.14 a
class Something
{
	private:
	int m_i;
	double m_d;
	char m_c;
	int m_arr[5];
	
	public:
	Something()
		: m_i{1}, m_d{3.14}, m_c{'a'}, m_arr{1, 2, 3, 4, 5}
	{
		// m_i = 1;
		// m_d = 3.14;
		// m_c = 'a';
	}
	
	void print()
	{
		cout << m_i << " " << m_d << " " << m_c << endl;
		for(auto& e : m_arr)
			cout << e << " ";
		cout << endl;
	}
};

// 1 3.14 a
// 1 2 3 4 5

 

#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{2};
	double m_d{5.24};
	char m_c = 'F';
	int m_arr[5];
	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 = 1;
		// m_d = 3.14;
		// m_c = 'a';
	}
	
	void print()
	{
		cout << m_i << " " << m_d << " " << m_c << " "<< endl;
		for(auto& e : m_arr)
			cout << e << " ";
		cout << endl;
	}
};

int main()
{
	Something s;
	s.print();
	
	return 0;
}

이럴 경우 생성자의 우선순위가 먼저다.

 

 

 

'언어 > C++' 카테고리의 다른 글

8.9 클래스와 const  (0) 2020.04.23
8.5 위임 생성자  (0) 2020.04.22
8.3 생성자 Constructors  (0) 2020.04.22
8.2 캡슐화, 접근 지정자, 접근 함수  (0) 2020.04.22
[C++] std::array  (0) 2020.03.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함