컴퓨터 언어/C++

[C++] C++ 8일차 클래스 2 접근지정자(public, private , protected )

훈츠 2020. 4. 7. 11:06
반응형

안녕하세요. 훈츠입니다. 금일은 클래스 접근지정자에 대해 정리 해보도록 하겠습니다. 


접근 지정자 (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 로 변경해도 동일하게 적용되는것을 확인 할수 있습니다. 
반응형