추천, 2024

에디터의 선택

구조와 클래스의 차이점

구조와 클래스는 모두 인스턴스를 작성하는 데 더 사용할 수있는 사용자 정의 된 데이터 유형을 작성하는 방법을 제공합니다. C ++은 구조체의 역할을 확장하여 클래스를 생성합니다. 구조와 클래스 모두 기본적으로 구조가 "public"으로 모든 멤버를 가지며 기본적으로 클래스는 모든 멤버를 "private"로한다는 점을 제외하면 모든 점에서 비슷합니다. 비교 차트를 사용하여 구조와 클래스의 차이점을 알아 보겠습니다.

비교 차트

비교의 근거구조수업
기본액세스 지정자가 선언되지 않으면 기본적으로 모든 구성원이 '공개'입니다.액세스 지정자가 선언되지 않으면 기본적으로 모든 구성원이 '비공개'입니다.
선언struct structure_name {
유형 struct_element 1;
type struct_element 2;
유형 struct_element 3;
.
.
.
};
class class_name {
데이터 멤버;
멤버 함수;
};
'구조'의 인스턴스를 '구조 변수'라고합니다.'클래스'의 인스턴스를 '객체'라고합니다.

구조의 정의

구조는 서로 다른 데이터 유형의 변수 모음으로, 모두 하나의 이름으로 참조됩니다. 구조체 선언은 구조체의 인스턴스를 만드는 데 사용되는 템플릿을 형성합니다. 구조는 다음과 같이 선언됩니다.

 struct sname {type struct_element1; 유형 struct_element2; 유형 struct_element3; . . . } variable1, variable2, . . .; 

키워드 'struct'는 구조체가 선언되고 있음을 컴파일러에 정의합니다. 'sname'은 구조체에 주어진 이름을 나타냅니다. 구조 선언은 명령문으로 간주되므로 항상 세미콜론으로 끝납니다. 위 코드 (variable1, variable2)에서와 같이 종료 전에 구조의 인스턴스를 선언하거나 구조 이름 앞에 인스턴스 이름을 작성하여 main ()에 구조의 인스턴스를 선언 할 수 있습니다.

 // 예. main () {sname S1, S2; } 

여기서 S1과 S2는 구조의 인스턴스입니다. 구조체의 인스턴스를 "구조체 변수"라고합니다. 구조체 내부에서 선언 된 요소는 도트 (.) 연산자를 사용하여 구조체 변수를 통해 액세스 할 수 있습니다.

 // example S1. struct_element1; 
  • 구조체 배열을 만들 수도 있습니다.이 경우 먼저 구조체를 선언 한 다음 해당 형식의 배열을 선언해야합니다.
 // 샘플 struct sname sarray [10]; 

위의 명령문은 10 개의 변수를 포함하는 'sarray'라는 이름의 배열을 만들고 각 변수는 'sname'에 정의 된대로 구성됩니다.

  • 함수에 구조체 멤버를 전달할 수 있으며 전체 구조체를 함수에 전달할 수 있습니다.
  • 정수 포인터, 배열 포인터와 마찬가지로 구조체 포인터는 구조 변수 이름 앞에 '*'를 붙여 선언 할 수 있습니다.
 // 샘플 struct sname * S1; 

노트 :

'구조'요소는 인접한 메모리 위치에 저장됩니다.

클래스의 정의

OOP의 클래스는 클래스의 데이터 멤버에 액세스하는 데 사용되는 데이터 멤버 및 멤버 함수가 포함 된 새 형식을 정의합니다. 클래스의 인스턴스는 각각 "클래스"와 동일한 구성을 갖는 "객체"라고합니다. 클래스는 논리적 인 추상화 인 반면, 객체는 물리적 인 존재입니다. 클래스는 구문 적으로 구조와 비슷합니다. 클래스는 다음과 같이 선언 할 수 있습니다.

 클래스 class_name {개인 데이터 멤버 및 멤버 함수. access_specifier 유형 data_member; mem_funct (매개 변수 목록) {. . }} 객체 목록; 

여기서 클래스는 클래스가 선언되었음을 컴파일러에 선언하는 키워드입니다. OOP의 주요 특징은 "공개", "개인", "보호 된"세 가지 액세스 지정자를 제공함으로써 수행되는 데이터 숨기기입니다. 데이터 멤버 또는 멤버 함수를 선언하는 동안 클래스에 액세스 지정자를 지정하지 않으면 기본적으로 모두 private로 간주됩니다. 공용 액세스 지정자는 프로그램의 다른 부분에서 함수, 데이터에 액세스 할 수있게합니다. 클래스의 비공개 멤버는 해당 클래스의 멤버 만 액세스 할 수 있습니다. 보호 액세스 지정자는 상속 중에 적용됩니다. 액세스 지정자를 선언하면 프로그램 전체에서 변경할 수 없습니다.

객체는 클래스의 인스턴스입니다. 클래스 멤버는 도트 (.) 연산자를 사용하여 같은 클래스의 객체에 의해 액세스됩니다.

 //object.mem_funct (arguments); 
  • 객체는 함수의 인수로 전달 될 수도 있습니다.
  • 개체에 대한 포인터를 만들 수도 있습니다.

구조와 클래스의 주요 차이점

  1. 구조와 클래스의 주된 차이점은 기본적으로 구조의 모든 멤버는 public이지만, 기본적으로 클래스의 모든 멤버는 private입니다.

유사점 :

  • C ++에서 구조와 클래스는 모두 구문 상 동등합니다.
  • 구조와 클래스 모두 구성원 중 일부를 비공개로 선언 할 수 있습니다.
  • 구조체 또는 클래스의 이름은 독립 실행 형으로 사용할 수 있습니다.
  • 구조와 클래스 모두 상속 메커니즘을 지원합니다.

결론:

구조체는 데이터 숨김을 허용하지 않으므로 C의 구조에는 제한이있었습니다. 'struct'데이터 형식은 기본 제공 형식처럼 처리 될 수 없으며 구조는 상속을 지원하지 않습니다. C ++의 구조는 이러한 한계를 극복했습니다. C ++에서 클래스는 구조체의 확장 된 버전입니다. 프로그래머는 클래스를 사용하여 데이터를 보유하고 둘 다 작동하고 데이터를 보유하기 위해서만 구조를 사용하는 것을 쉽게 알 수 있습니다.

Top