티스토리 뷰
#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
링크
TAG
- 구조체
- 회전리스트
- C
- call by value
- 종류
- 직접 지정
- 프로그래밍
- 공용체
- Algorithm
- 공부
- 파이썬
- 간접 지정
- 자료구조
- codeit
- 다차원 배열
- inflearn
- 형승격
- 포인터
- 알고리즘
- 공간복잡도
- 배열
- 시간복잡도
- 재귀함수
- timecomplexity
- call by reference
- 3차원 배열
- 2차원 배열
- 강의
- 비트필드
- 1차원 배열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함