C++에서 액세스 한정자를 제어하는 ​​방법: 멤버 가시성 이해

C Eseo Aegseseu Hanjeongjaleul Jeeohaneun Bangbeob Membeo Gasiseong Ihae



데이터 숨기기는 외부에서 클래스 데이터에 대한 원치 않는 액세스를 방지하기 위해 클래스 내 데이터 액세스를 제한하는 것을 의미하는 C++의 주요 기능 중 하나입니다. 따라서 액세스 한정자는 어떤 클래스 멤버가 어떤 외부 소스에 액세스할 수 있는지, 어떤 클래스 멤버가 액세스할 수 없는지를 정의하는 데 사용됩니다.

C++의 액세스 한정자

액세스 한정자는 클래스 데이터의 접근성과 가시성을 관리하는 데 사용됩니다. 외부 함수에서 액세스할 수 없도록 데이터 멤버에 몇 가지 제한 사항을 설정했습니다. C++의 액세스 한정자는 세 가지 유형이 있습니다.

C++의 공개 액세스 수정자

public 키워드 아래 선언된 클래스의 모든 멤버는 프로그램 내 클래스 외부의 모든 함수에서 사용할 수 있습니다. 도트 연산자라고도 하는 직접 멤버 액세스 연산자(.)를 해당 특정 클래스의 개체와 함께 사용하여 이러한 데이터 멤버에 액세스할 수 있습니다.







공용 액세스 한정자는 클래스를 선언하는 데 사용되며 해당 데이터 멤버는 프로그램 내의 다른 함수에 의해 액세스됩니다.



#include

#include

#include

네임스페이스 표준 사용 ;
클래스 트라이앵글
{
공공의 :
뜨다 엑스 , 그리고 , 와 함께 ;
무효의 입력 ( )
{
시합 << '삼각형의 변 x를 입력하세요:-' ;
식사 >> 엑스 ;
시합 << '삼각형의 변 y를 입력하세요:-' ;
식사 >> 그리고 ;
시합 << '삼각형의 변 z를 입력하세요:-' ;
식사 >> 와 함께 ;
}
무효의 영역 ( )
{
뜨다 에스 = ( 엑스 + 그리고 + 와 함께 ) / 2 ;
뜨다 영역 = sqrt ( 에스 * ( 에스 - 엑스 ) * ( 에스 - 그리고 ) * ( 에스 - 와 함께 ) ) ;
시합 << ' \N 삼각형의 면적 = << 영역 ;
}
} ;
정수 기본 ( )
{
삼각형 t1 ;
t1. 입력 ( ) ;
t1. 영역 ( ) ;
반품 0 ;
}

Triangle은 클래스로 정의되며 해당 매개변수는 public 키워드 아래에 있습니다. 그런 다음 공용 수정자의 데이터 멤버에 액세스하여 이 클래스 외부에서 삼각형의 면적이 계산됩니다.







삼각형의 세 변은 사용자가 입력하고 표준 공식인 13.4164를 사용하여 클래스 외부의 값에 접근하여 삼각형의 면적을 계산합니다.

C++의 개인 액세스 수정자

private 키워드 아래 선언된 클래스의 모든 멤버는 프로그램의 클래스 외부에 있는 어떤 함수에서도 사용할 수 없습니다. 이러한 비공개 멤버는 동일한 클래스 내의 직접 멤버만 읽을 수 있습니다. 그러나 친구 함수와 클래스도 데이터에 액세스할 수 있습니다.



public과 private 두 클래스가 선언되고, 프로그램의 반환 값은 삼각형의 면적이 됩니다.

#include

#include

#include

네임스페이스 표준 사용 ;
클래스 트라이앵글
{

사적인 :
뜨다 엑스 , 그리고 , 와 함께 ;
공공의 :
무효의 입력 ( )

{

시합 << '삼각형의 변 x를 입력하세요:-' ;
식사 >> 엑스 ;
시합 << '삼각형의 변 y를 입력하세요:-' ;
식사 >> 그리고 ;
시합 << '삼각형의 변 z를 입력하세요:-' ;
식사 >> 와 함께 ;

}
무효의 영역 ( )
{

뜨다 에스 = ( 엑스 + 그리고 + 와 함께 ) / 2 ;
뜨다 영역 = sqrt ( 에스 * ( 에스 - 엑스 ) * ( 에스 - 그리고 ) * ( 에스 - 와 함께 ) ) ;
시합 << ' \N 삼각형의 면적 = << 영역 ;

}

} ;

정수 기본 ( )
{
삼각형 t1 ;
t1. 입력 ( ) ;
t1. 영역 ( ) ;
반품 0 ;

}

main()에서 객체 t1은 전용 클래스 변수 float x, y 및 z에 직접 액세스할 수 없으므로 공용 함수 input()을 통해서만 간접적으로 조작할 수 있습니다. 이 함수는 x, y 및 z의 값을 얻기 때문입니다.

삼각형의 면적은 공개 클래스를 사용하여 조작하여 비공개 클래스에 액세스하여 얻습니다. x, y 및 z 값이 공개 클래스에서 선언되지 않으면 계산을 위해 main()에서 액세스되지 않습니다.

C++의 보호된 액세스 한정자

protected 키워드 아래의 멤버와 함수는 보호되며 클래스 및 파생 클래스 내에서만 액세스할 수 있습니다. 나머지 클래스는 해당 데이터에 액세스할 수 없습니다. 그들은 고도로 보호됩니다.

protected 키워드 아래의 보호된 데이터는 클래스 내에서 그리고 파생 클래스인 클래스에서만 읽을 수 있습니다. 이 예는 protected 액세스 수정자의 실제 데모입니다.

#include

#include

#include

네임스페이스 표준 사용 ;
//부모 클래스
클래스 트라이앵글
{

보호됨 :
뜨다 엑스 , 그리고 , 와 함께 ;
} ;
//자식 클래스
클래스 TriangleChild : 공개 트라이앵글 {
공공의 :
무효의 입력 ( )

{

시합 << '삼각형의 변 x를 입력하세요:-' ;
식사 >> 엑스 ;
시합 << '삼각형의 변 y를 입력하세요:-' ;
식사 >> 그리고 ;
시합 << '삼각형의 변 z를 입력하세요:-' ;
식사 >> 와 함께 ;

}
무효의 영역 ( )
{
뜨다 에스 = ( 엑스 + 그리고 + 와 함께 ) / 2 ;
뜨다 영역 = sqrt ( 에스 * ( 에스 - 엑스 ) * ( 에스 - 그리고 ) * ( 에스 - 와 함께 ) ) ;
시합 << ' \N 삼각형의 면적 = << 영역 ;

}
} ;

정수 기본 ( )

{
삼각형어린이 ;
어린이. 입력 ( ) ;
어린이. 영역 ( ) ;
반품 0 ;

}

TriangleChild는 Triangle 클래스에서 파생된 상속 클래스입니다. 변수 x, y 및 z는 protected 키워드를 사용하여 Triangle에 선언됩니다. 이는 이러한 변수가 보호되지만 Triangle이 상위 클래스이므로 TriangleChild에서 액세스할 수 있음을 의미합니다. 변수의 값은 Triangle 클래스에 선언되었음에도 불구하고 TriangleChild에 할당되었습니다.

자식 클래스를 통해 변수에 액세스한 후 삼각형의 면적을 계산합니다.

결론

데이터 숨기기는 외부에서 클래스 데이터에 대한 원치 않는 액세스를 방지합니다. 액세스 수정자는 프로그램에서 데이터의 접근성과 가시성을 관리하는 데 사용됩니다. 개인, 보호 및 공개 액세스 수정자는 데이터를 숨기는 데 사용됩니다. public 키워드 아래의 데이터는 클래스 외부의 함수에서도 읽을 수 있습니다. private으로 선언된 데이터는 클래스 내에서만 읽을 수 있지만 보호된 데이터는 부모 클래스와 자식 클래스에서도 액세스할 수 있습니다.