[C++] class와 struct 차이. 무엇을 언제 써야할까?
2023. 4. 24. 13:22
반응형
🔹 요약
C++에서 struct와 class는 모두 사용자 데이터 타입을 정의할 때 사용됩니다. 둘 다 데이터 멤버와 함수를 가질 수 있습니다. 그러나 일반적으로 struct는 데이터의 집합체로 사용되며, class는 객체 지향 프로그래밍에서 객체의 정의를 위해 사용됩니다.
struct와 class의 주요 차이점은 기본 접근 제어 수준입니다. struct는 기본적으로 public으로 정의되며, class는 기본적으로 private으로 정의됩니다. 이것은 struct는 멤버 변수 및 함수가 외부에서 쉽게 액세스 될 수 있지만, class는 멤버 변수 및 함수에 대한 직접적인 액세스를 제한합니다.
또한, class는 상속, 다형성 및 캡슐화와 같은 객체 지향 개념을 더 잘 지원합니다. 이러한 이유로, 클래스는 대개 객체 지향 프로그래밍에서 사용되며, struct는 단순한 데이터의 집합체를 나타내기 위해 사용됩니다.
🔹 struct 사용 예시
struct는 일반적으로 단순한 데이터 집합체를 나타내기 위해 사용합니다.
아래 2차원 평면에서 좌표를 나타내는 struct를 예시입니다.
#include <iostream>
using namespace std;
// 구조체 지정
struct Point {
int x;
int y;
};
Point addPoints(Point p1, Point p2) {
Point result;
result.x = p1.x + p2.x;
result.y = p1.y + p2.y;
return result;
}
int main() {
Point p1 = {1, 2};
Point p2 = {3, 4};
Point sum = addPoints(p1, p2);
cout << "Sum of points: (" << sum.x << ", " << sum.y << ")" << endl;
return 0;
}
🔹 class 사용 예시
위 예제를 다시 class로 변경해보겠습니다. x,y를 private로 제한하고 생성자와 getter를 만들었습니다.
#include <iostream>
using namespace std;
class Point {
private:
int x;
int y;
public:
Point(int _x, int _y) {
x = _x;
y = _y;
}
Point addPoints(Point otherPoint) {
int newX = x + otherPoint.x;
int newY = y + otherPoint.y;
Point result(newX, newY);
return result;
}
int getX() {
return x;
}
int getY() {
return y;
}
};
int main() {
Point p1(1, 2);
Point p2(3, 4);
Point sum = p1.addPoints(p2);
cout << "Sum of points: (" << sum.getX() << ", " << sum.getY() << ")" << endl;
return 0;
}
반응형
'Programming > 알고리즘' 카테고리의 다른 글
[C++] 함수 객체 functor (Function Object) (0) | 2023.04.24 |
---|---|
[C++] Template 이용하기 (Generic 프로그래밍) (0) | 2023.04.24 |
[알고리즘] 부분 수열 (w/ 비트 마스크) - 파이썬 (0) | 2021.08.22 |
[알고리즘] 다양한 정렬 (버블, 카운팅, 선택 정렬) - 파이썬 (0) | 2021.08.22 |
[알고리즘] 시간복잡도 & 공간복잡도 (0) | 2021.08.20 |