반응형
1. 구조체 (struct vs class)
struct
멤버 변수/함수에 대한 기본적으로 제공되는 접근지시자가 public이며, 대게 단순한 데이터를 표현하는데 사용합니다.
class
멤버 변수/함수에 대한 기본적으로 제공되는 접근지시자가 private이며, 대게 기본적으로 제공되지 않는 constructor, operator를 사용하지 않거나 다양한 접근지시자가 필요할 때 사용합니다.
2. 변수 및 구조체 (pointer, reference, struct, class, union, choice, enum 등)
구조체 선언
typedef struct packet1
{
int data0;
int* data1;
union uni{
int data2
int data3
}Uni;
}Packet;
+ 구조체 선언: typedef struct VS struct
// i) Struct packet 선언: Recommendation: common ideom
typedef struct packet1
{
int data0;
int* data1;
}Packet;
void doit(Packet pac);
// ii) Struct packet 선언: Not Recommendation
struct packet2
{
int data0;
int* data1;
};
void doit(struct packet2 pac);
- typedef를 사용하는 이유?
- 일반적으로 첫번째와 같은 struct 선언이 object를 생성/호출하기 용이(struct라고 명시할 필요없음)하고,
- C와의 호환성을 위해서 추천합니다(C에서 typedef를 사용하기에 호환성이 좋음).
- Packet: 구조체의 테그 포인트, C++에서는 구조체 타입 명으로도 인식합니다.
- typedef struct <name> { ... }<other name>의 경우,
struct { ... }; typedef struct <name> <other name>와 동일합니다.
구조체 대입
Packet p; //Struct Packet 정의
p.data0 = 0;
p.(*data1) = 1;
Packet p; // Struct Packet 정의
Packet* p_pointer; // Packet에 대한 Pointer 선언
p_pointer = &p; // Pointer 정의
p_pointer->data0 = 0;
구조체 접근
int data0 = p.data0;
int *data1 = p.data1;
참고
- When should you use a class vs a struct in C++?: https://stackoverflow.com/questions/54585/when-should-you-use-a-class-vs-a-struct-in-c
- 구조체 포인터의 선언과 접근: https://neuro.tistory.com/16
- Difference Between Struct and Typedef Struct in C: https://www.delftstack.com/howto/c/struct-and-typedef-struct-in-c/
반응형
'Study: Software(SW) > SW: Language' 카테고리의 다른 글
[C++] 객체지향 프로그래밍: 예외 처리(try, catch, throw, exception) (0) | 2022.08.29 |
---|---|
[C++] 객체지향 프로그래밍: fstream 파일 입출력(feat. 파일 전체 읽기, 한 줄씩 읽기) (0) | 2022.08.19 |
[C++] Modern C++ Programming Cookbook 정리 (0) | 2022.07.12 |
[C++] 함수형 프로그래밍(feat. lambda function) (0) | 2022.07.06 |
[C++] 조건부 컴파일 매크로(전처리기 지시어): Header Guard (#if, #ifdef, #elif, #else, #endif...) (0) | 2022.07.04 |