티스토리 뷰

언어/C++

8.5 위임 생성자

js0331 2020. 4. 22. 20:09
#include<iostream>
#include<string>

using namespace std;

class Student
{
	private:
	int		m_id;
	string m_name;
	
	public:
	Student(const string& name_in)
		// : m_id(0), m_name(name_in)
		: Student(0, name_in)
	{}
	
	Student(const int& id_in, const string& name_in)
		: m_id(id_in), m_name(name_in)
	{}
	
	void print()
	{
		cout << m_id << " " << m_name << endl;
	}
};

int main()
{
	Student st1(0, "Jack Jack");
	st1.print();
	
	Student st2("Dash");
	st2.print();
	
	return 0;
}

// 0 Jack Jack
// 0 Dash

 

초기화 코드를 분리시키는 방법

class Student
{
	private:
	int m_id;
	string m_name;
	
	public:
	Student(const string& name_in)
		// : m_id(0), m_name(name_in)
		// : Student(0, name_in)
	{
			init(0, name_in);
	}
	
	Student(const int& id_in, const string& name_in)
		// : m_id(id_in), m_name(name_in)
	{
		init(id_in, name_in);
	}
	
	void init(const int& id_in, const string& name_in)
	{
		m_id = id_in;
		m_name = name_in;
	}
	
	void print()
	{
		cout << m_id << " " << m_name << endl;
	}
};

 

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

8.10 정적 멤버 변수  (0) 2020.04.23
8.9 클래스와 const  (0) 2020.04.23
8.4 생성자 멤버 초기화 목록  (0) 2020.04.22
8.3 생성자 Constructors  (0) 2020.04.22
8.2 캡슐화, 접근 지정자, 접근 함수  (0) 2020.04.22
공지사항
최근에 올라온 글
최근에 달린 댓글
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
글 보관함