C++에서 구조와 클래스의 차이점
-
C++의
struct
대class
키워드 -
C++에서
class
와struct
의 액세스 수정자 -
C++에서
class
와struct
의 메모리 할당 -
C++에서
class
와struct
의 Null 값 -
C++에서
class
와struct
의 값 유형 대 참조 유형 -
C++에서
class
와struct
의 보안
이 기사에서는 C++에서 구조체와 클래스의 차이점에 대해 설명합니다. 이 기사는 최신 버전의 C++에 대해 작성되었습니다. 이전 버전에서는 struct
와 class
사이에 더 많은 제한 사항과 차이점이 있었습니다.
대부분의 경우 구조
는 클래스
와 매우 유사하지만 차이점은 거의 없습니다. 하나씩 살펴보겠습니다.
C++의 struct
대 class
키워드
구조체는 struct
키워드를 사용하여 선언되지만 class
키워드는 클래스를 선언하는 데 사용됩니다.
클래스 구문:
class demo {
private:
private
members...
.
public : public members....
};
구조체 구문:
struct demo {
members1;
members2;
...
};
C++에서 class
와 struct
의 액세스 수정자
C++에서 class
와 struct
는 public
, private
, 그리고 protected
라는 세 가지 접근 지정자를 가지고 있습니다. 그러나 C++에서 구조체의 멤버는 기본적으로 public
이며, 클래스의 멤버는 기본적으로 private
입니다.
class
를 사용하는 예제 코드:
#include <bits/stdc++.h>
using namespace std;
class demo {
int temp;
};
int main() {
demo d;
d.temp = 20;
}
출력: temp
가 비공개이기 때문에 컴파일 오류가 발생합니다.
[Error] int demo::temp is private
[Error] within this context
struct
를 사용하는 예제 코드:
#include <bits/stdc++.h>
using namespace std;
struct demo {
int temp;
};
int main() {
demo d;
d.temp = 20;
cout << d.temp;
}
출력:
20
C++에서 class
와 struct
의 메모리 할당
구조체가 생성되어 구현될 때마다 stack
영역에 메모리가 할당되지만 클래스가 생성되어 구현될 때 heap
영역에 메모리가 할당됩니다.
C++에서 class
와 struct
의 Null 값
구조체의 멤버는 null
값일 수 없지만 클래스 멤버는 null
값을 가질 수 있습니다.
C++에서 class
와 struct
의 값 유형 대 참조 유형
C++에서 구조는 값 유형이고 클래스는 참조 유형입니다. 값 유형은 스택에 내용을 저장하고 선언된 값을 직접 보유하므로 구조체 변수가 생성될 때마다 변수에 struct
의 데이터가 직접 포함됩니다.
그러나 참조 유형 클래스의 경우 객체가 생성될 때마다 데이터 대신 참조
를 보유합니다.
C++에서 class
와 struct
의 보안
최종 사용자 구현 세부 사항은 숨길 수 없지만 설계 세부 사항은 클래스 구현에서 쉽게 숨길 수 있기 때문에 보안은 구조의 주요 문제입니다.
차이점을 표 형식으로 요약해 보겠습니다.
구조 | 수업 |
---|---|
struct 키워드를 사용하여 구조를 정의합니다. |
클래스를 정의하려면 class 키워드를 사용하십시오. |
덜 안전합니다. | 최종 사용자에게 구현을 숨길 수 있으므로 더 안전합니다. |
메모리는 스택 영역에 할당됩니다. |
메모리는 힙 영역에 할당됩니다. |
구성원은 null 값을 가질 수 없습니다. |
구성원은 null 값을 가질 수 있습니다. |
액세스 한정자는 기본적으로 공용 입니다. |
액세스 한정자는 기본적으로 비공개 입니다. |
구조는 값 유형 입니다. |
클래스는 참조 유형 입니다. |