티스토리 뷰

#include<iostream>

using namespace std;

class Date
{
	public:		// access specifier
	// private:
	int m_month;
	int m_day;
	int m_year;
};

int main()
{
	Date today; // {8, 4, 2025};
	
	today.m_month = 8;
	today.m_day = 4;
	today.m_year = 2025;
	
	return 0;
}
#include<iostream>

using namespace std;

class Date
{
	int m_month;
	int m_day;
	int m_year;
	
	public:
	void setData(const int& month_input, const int& day_input, const int& year_input)
	{
		m_month = month_input;
		m_day = day_input;
		m_year = year_input;
	}
};

int main()
{
	Date today; // {8, 4, 2025};
	
	// today.m_month = 8;
	// today.m_day = 4;
	// today.m_year = 2025;
	today.setData(8, 4, 2025);
	
	return 0;
}

 

setData는 일종의 access function

 

#include<iostream>

using namespace std;

class Date
{
	int m_month;
	int m_day;
	int m_year;
	
	public:
	void setData(const int& month_input, const int& day_input, const int& year_input)
	{
		m_month = month_input;
		m_day = day_input;
		m_year = year_input;
	}
	
    const int& getDay()
	{
		return m_day;
	}
};

int main()
{
	Date today; // {8, 4, 2025};
	
	// today.m_month = 8;
	// today.m_day = 4;
	// today.m_year = 2025;
	today.setData(8, 4, 2025);
	
	// cout << today.m_day; 	// error
	cout << today.getDay() << endl;
	
	return 0;
}
#include<iostream>

using namespace std;

class Date
{
	int m_month;
	int m_day;
	int m_year;
	
	public:
	void setDate(const int& month_input, const int& day_input, const int& year_input)
	{
		m_month = month_input;
		m_day = day_input;
		m_year = year_input;
	}
	
	const int& getDay()	// 바꾸지 못하게 const를 추가하는 것이 좋다.
	{
		return m_day;
	}
	
	void copyFrom(const Date& orginal)
	{
		m_month = orginal.m_month;
		m_day = orginal.m_day;
		m_year = orginal.m_year;
	}
};

int main()
{
	Date today; // {8, 4, 2025};
	
	// today.m_month = 8;
	// today.m_day = 4;
	// today.m_year = 2025;
	today.setDate(8, 4, 2025);
	
	Date copy;
	copy.copyFrom(today);
	
	
	return 0;
}

 

orginal.m_month는 private 일텐데 어떻게 접근이 가능한 것일까

 

그 이유는 같은 클래스에서 다른 인스턴스에 있는 친구들이라면 접근가능하다. 

 

 

getter, setter를 구현하는 유용한 예

class Date
{
	public:
	int m_month2;
	int m_day;
	int m_year;
int main()
{
	Date today; // {8, 4, 2025};
	
	// today.m_month = 8;
	// today.m_day = 4;
	// today.m_year = 2025;
	today.setDate(8, 4, 2025);
	
	Date copy;
	copy.copyFrom(today);
	copy.m_month = 45;
	today.m_month = 32;
	
	
	return 0;
}

 

클래스 안의 변수명을 변경하게되면 클래스 내 함수내에서 쓰이는 변수명뿐만아니라 main에서 쓰이는 변수들의 이름 또한 수정해야 되므로 번거로워 진다.

 

하지만, setter를 설정하게되면 그 함수에서 쓰이는 변수명만을 변경하면 되므로 훨씬 용이해진다.

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

8.5 위임 생성자  (0) 2020.04.22
8.4 생성자 멤버 초기화 목록  (0) 2020.04.22
8.3 생성자 Constructors  (0) 2020.04.22
[C++] std::array  (0) 2020.03.28
[C++] 문자열 / std::string  (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
글 보관함