C++에서 구조와 클래스의 차이점

Suraj P 2023년10월12일
  1. C++의 structclass 키워드
  2. C++에서 classstruct의 액세스 수정자
  3. C++에서 classstruct의 메모리 할당
  4. C++에서 classstruct의 Null 값
  5. C++에서 classstruct의 값 유형 대 참조 유형
  6. C++에서 classstruct의 보안
C++에서 구조와 클래스의 차이점

이 기사에서는 C++에서 구조체와 클래스의 차이점에 대해 설명합니다. 이 기사는 최신 버전의 C++에 대해 작성되었습니다. 이전 버전에서는 structclass 사이에 더 많은 제한 사항과 차이점이 있었습니다.

대부분의 경우 구조클래스와 매우 유사하지만 차이점은 거의 없습니다. 하나씩 살펴보겠습니다.

C++의 structclass 키워드

구조체는 struct 키워드를 사용하여 선언되지만 class 키워드는 클래스를 선언하는 데 사용됩니다.

클래스 구문:

class demo {
 private:
 private
  members...
      .

      public : public members....
};

구조체 구문:

struct demo {
  members1;
  members2;
  ...
};

C++에서 classstruct의 액세스 수정자

C++에서 classstructpublic, 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++에서 classstruct의 메모리 할당

구조체가 생성되어 구현될 때마다 stack 영역에 메모리가 할당되지만 클래스가 생성되어 구현될 때 heap 영역에 메모리가 할당됩니다.

C++에서 classstruct의 Null 값

구조체의 멤버는 null 값일 수 없지만 클래스 멤버는 null 값을 가질 수 있습니다.

C++에서 classstruct의 값 유형 대 참조 유형

C++에서 구조는 값 유형이고 클래스는 참조 유형입니다. 값 유형은 스택에 내용을 저장하고 선언된 값을 직접 보유하므로 구조체 변수가 생성될 때마다 변수에 struct의 데이터가 직접 포함됩니다.

그러나 참조 유형 클래스의 경우 객체가 생성될 때마다 데이터 대신 참조를 보유합니다.

C++에서 classstruct의 보안

최종 사용자 구현 세부 사항은 숨길 수 없지만 설계 세부 사항은 클래스 구현에서 쉽게 숨길 수 있기 때문에 보안은 구조의 주요 문제입니다.

차이점을 표 형식으로 요약해 보겠습니다.

구조 수업
struct 키워드를 사용하여 구조를 정의합니다. 클래스를 정의하려면 class 키워드를 사용하십시오.
덜 안전합니다. 최종 사용자에게 구현을 숨길 수 있으므로 더 안전합니다.
메모리는 스택 영역에 할당됩니다. 메모리는 영역에 할당됩니다.
구성원은 null 값을 가질 수 없습니다. 구성원은 null 값을 가질 수 있습니다.
액세스 한정자는 기본적으로 공용입니다. 액세스 한정자는 기본적으로 비공개입니다.
구조는 값 유형입니다. 클래스는 참조 유형입니다.
작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

관련 문장 - C++ Class