반응형
예시코드
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Date
{
int m_month;
int m_day;
int m_year;
};
int main()
{
Date today;
today.m_month = 8;
today.m_day = 4;
today.m_year = 2024;
return 0;
}
이렇게 struct를 사용할 수 있지만 class로 바꿀 수도 있습니다. 하지만 class로 바꿀 때 int main에 있는 것들은 에러가 납니다. 왜냐하면 public:을 사용하지 않았기 때문입니다.
public: 은 acces specifier라고 부릅니다. 즉 접근지정자라고 부릅니다. class 안에 지정된 것이 밖에서 지정할 수 있는지 없는지를 나타내는 것입니다. private:도 있습니다. 이것은 private은 막는다는 뜻입니다. protected:도 있지만 이는 상속을 공부하신 후 아시면 됩니다.
CLASS 이용 예시
#include <iostream>
#include <string>
#include <vector>
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;
}
};
int main()
{
Date today;
today.setDate(8, 4, 2025);
return 0;
}
이렇게 함수를 통해서 연결을 해주면 됩니다.
#include <iostream>
#include <string>
#include <vector>
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;
}
void setMonth(const int& month_input)
{
m_month = month_input;
}
int getDay()
{
return m_day;
}
void copyFrom(const Date& original)
{
m_month = original.m_month;
m_day = original.m_day;
m_year = original.m_year;
}
};
int main()
{
Date today;
today.setDate(8, 4, 2025);
today.setMonth(10);
cout << today.getDay() << endl;
Date copy;
copy.copyFrom(today);
return 0;
}
이렇게 class에서 public를 걸어두지 않고 private를 한 다음에 class 안에 함수만 public을 통해서 int main에 쓰면 헷갈리지 않고 쓸 수 있는 방법입니다. 만약에 int m_month 같은 변수를 public을 두고 사용할 때 해당 변수의 이름이 바뀌게 되면 다 바꿔야 하기 때문에 번거로울 수 있습니다.
그래서 위에 식처럼 사용하고 싶은 것을 void setMonth() 이런식으로 해서 사용을 한다면 int main에서는 today.setMonth() 이런 식으로 함수만 이용해서 사용하면 되기에 깔끔하게 표현을 할 수 있습니다.
반응형
'IT 프로그래밍' 카테고리의 다른 글
CPU 및 메모리에 대한 설명 (1) | 2024.08.21 |
---|---|
[따배시] C++ 기초 (0) | 2024.03.04 |
C++ 언어 기초 요약 (0) | 2024.03.04 |
[따배시] 9.4 변수의 영역과 지역 변수 (0) | 2024.01.15 |
[따배시 6.1] while문을 이용한 scanf 함수 정의 (0) | 2024.01.09 |