티스토리 뷰

C++

[C++] struct와 class

pppgod 2019. 6. 26. 20:32

 C++에서 struct와 class는 사실 거의 차이가 없다. struct에서도 생성자와 소멸자를 만들 수 있으며, 멤버 함수 또한 구현이 가능하다. 몇가지 차이가 있는데 그 차이는 다음과 같다.

  1. public과 private, protected 없다.
  2. 대입연산자가 구현되어있다.
  3. 이동생성자를 구현하지 않아도 된다.

1. public과 private이 없다.

 아마 가장 큰 차이점이지 않나 싶다. class는 private, protected를 통해 외부에서의 접근을 막는다. 하지만 struct는 모두 public이나 다름이 없기 때문에 외부 접근을 막을 수 없다.

 

2. 대입연산자가 구현되어있다.

 대입연산자란 기호 = 을 말한다. class의 경우에는 연산자 오버로딩을 통해 구현해주어야 하지만 struct는 기본으로 생성해준다. 물론 연산자 오버로딩 또한 가능하다. 만약 class에서 자동으로 대입연산자를 만들고 싶다면 default로 선언해주자.

 

3. 이동생성자를 구현하지 않아도 된다.

 struct의 경우 이동생성자를 만들어야하나 싶을때가 있다. 하지만 struct는 이미 이동생성자가 구현되어있기 때문에 구현할 필요가 없다.

 

정리

 그 외에도 몇가지 차이점이 존재한다. 중요한 것은 class는 외부에서의 접근을 막을 수 있다는 것과 struct는 기본으로 생성된 함수가 많기 때문에 왠만하면 걱정하지 않고 사용해도 된다는 것이다. 하지만 struct가 편하다고 class 대신 사용해서는 안된다.

 

 

'C++' 카테고리의 다른 글

[C++] call by reference  (0) 2019.07.05
[C++] move 함수 이해하기 - 기초  (0) 2019.06.24
[C++] 헷갈리기 쉬운 포인터 변수의 소멸조건  (0) 2019.04.30
[C++] namespace 란 무엇인가?  (0) 2019.04.21
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함