반응형
안녕하세요. 훈츠입니다. 금일은 클래스 접근지정자에 대해 정리 해보도록 하겠습니다.
접근 지정자 (public, private, protected)
- 외부에서 클래스의 멤버에 접근하여 사용할 수 있는 권한을 제한하는 역활
- class 에서 접근 지정자를 사용하지 않은 멤버들은 기본적으로 private가 적용
- 접근 지정자의 적용 범위는 다음 접근 지정자가 나올 때까지이다.
public
외부에서 모든 멤버에 접근하여 멤버 함수 호출 및 변수의 사용이 가능 합니다.
#include <iostream>
#include <fstream>
using namespace std;
class Spoint
{
public :
int m_x, m_y;
void Print() {
cout << "출력" << m_x << '\t' << m_y << endl;
}
};
int main()
{
Spoint point;
point.m_x = 10;
point.m_y = 20;
cout << point.m_x << '\t' << point.m_y << endl;
}
이전 클래스편에서 아무 접근지정자도 지정하지 않았을때 private으로 선언 되어, 접근 시도시 에러 메시지가 나왔었습니다.
private
- private의 적용범위에 있는 멤버 변수와 함수는 외부에서 사용할 수 없다.
- 클래스 멤버 함수 안에서는 멤버 변수와 멤버 함수를 사용할 수 있다.
#include <iostream>
#include <fstream>
using namespace std;
class Spoint
{
private:
int m_nX, m_nY;
public :
int m_x, m_y;
void SetXY(int nX, int nY) { m_nX = nX; m_nY = nY; }
void Print() {
cout << "출력" << m_nX << '\t' << m_nY << endl;
}
};
int main()
{
Spoint point;
point.SetXY(10, 20);
point.Print();
}
protected
- 기본적으로 private와 같은 속성을 가진다. (외부 접근 X, 내부 접근 OK)
- 상속관계에 있을 때 상위 클래스의 멤버를 하위 클래스에서 private 속성으로 사용할수 있게 한다.
#include <iostream>
#include <fstream>
using namespace std;
class Spoint
{
protected:
int m_nX, m_nY;
public :
int m_x, m_y;
void SetXY(int nX, int nY) { m_nX = nX; m_nY = nY; }
void Print() {
cout << "출력" << m_nX << '\t' << m_nY << endl;
}
};
int main()
{
Spoint point;
point.SetXY(10, 20);
point.Print();
}
private -> protected 로 변경해도 동일하게 적용되는것을 확인 할수 있습니다.
'컴퓨터 언어 > C++' 카테고리의 다른 글
[C++] C++ 9일차 상속 1 (0) | 2020.04.09 |
---|---|
[C++] C++ 9일차 클래스 3 생성자, 소멸자, this (0) | 2020.04.09 |
[C++] C++ 8일차 클래스 1 (0) | 2020.04.06 |
[C++] C++ 7일차 메모리2 : new and delete 포인터2 (0) | 2020.04.05 |
[C++] C++ 6일차 메모리1 : new and delete 포인터1 (0) | 2020.04.04 |