728x90
반응형
C++
에서는struct
를 매우 유연하게 선언하고 초기화할 수 있습니다.C
스타일의 전통적인 선언 방식부터C++11
이후 도입된auto
,uniform initialization
문법까지 다양한 표현이 가능합니다.- 이 글에서는
struct OtherData
를 다양한 방식으로 선언하고 초기화하는 방법을 하나씩 살펴보겠습니다.
-
가장 전통적인 방식으로, 선언과 동시에 초기화하는 방법입니다.
-
cpp
struct OtherData { int a; float b; char msg[32]; } otherData = {10, 5.5f, "Test OtherData"}; // aggregate initialization
-
typedef
를 통해 구조체 타입에 별칭을 부여한 후 선언 및 초기화할 수도 있습니다. -
cpp
typedef struct { int a; float b; char msg[32]; } OtherData; OtherData otherData = {10, 5.5f, "Test OtherData"};
-
구조체 타입을 별도로 정의하지 않고
auto
를 사용하여 선언과 동시에 초기화할 수도 있습니다. -
cpp
auto otherData = struct { int a; float b; char msg[32]; } {10, 5.5f, "Test OtherData"};
-
구조체 타입 이름을 이용해 객체 생성 시 생성자 형태로 초기화하는 방식입니다.
-
cpp
struct OtherData { int a; float b; char msg[32]; } otherData = OtherData{10, 5.5f, "Test OtherData"};
-
중괄호
{}
를 이용하여 더 일관된 초기화를 제공합니다. -
cpp
struct OtherData { int a; float b; char msg[32]; } otherData {10, 5.5f, "Test OtherData"};
-
constexpr
을 사용하면 컴파일 타임 상수를 가질 수도 있습니다. -
cpp
struct OtherData { int a; float b; char msg[32]; } constexpr otherData = {10, 5.5f, "Test OtherData"};
-
전역 객체처럼 정적으로 생성하는 방식입니다.
-
cpp
static struct OtherData { int a; float b; char msg[32]; } otherData = {10, 5.5f, "Test OtherData"};
-
구조체 타입을 명시하지 않고
auto
를 통해 자동으로 타입을 유추하게 할 수도 있습니다. -
cpp
auto otherData = OtherData{10, 5.5f, "Test OtherData"};
-
using
을 활용해 별칭을 지정한 후 초기화할 수 있습니다. -
cpp
using OtherData = struct { int a; float b; char msg[32]; }; OtherData otherData = {10, 5.5f, "Test OtherData"};
-
동적 메모리 할당을 통해 포인터로 구조체를 생성하는 방법도 가능합니다.
-
cpp
auto otherData = new OtherData{10, 5.5f, "Test OtherData"};
C++
에서는 동일한 구조체 선언과 초기화도 상황에 맞게 여러 방식으로 표현할 수 있습니다.- 코드 가독성, 라이프사이클, 상수화 여부, 동적 할당 필요성 등에 따라 다양한 방법을 조합하여 사용하면 더욱 유연하고 가독성 높은 코드를 작성할 수 있습니다.
- 필요하다면
std::string
,std::array
등의 표준 라이브러리 타입을 혼합해서 더욱 현대적인 방식으로 구조체를 구성해볼 수도 있습니다.
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
728x90
반응형
'C C++' 카테고리의 다른 글
Visual Studio C++ 라이브러리 패키지 매니저 vcpkg 설치 및 자동 업데이트 가이드 (0) | 2025.03.22 |
---|---|
C++ 표준에서 제거된 주요 항목 목록 (0) | 2025.03.21 |
C++11과 C++14에서 std::unique_ptr 배열 사용법 비교 (0) | 2025.03.20 |
std::unique_ptr 생성 방법과 예외 안전성 (0) | 2025.03.20 |
C++ 문자열(string)을 실수형 double로 변환하는 다양한 방법 (0) | 2025.03.20 |