2025. 6. 17. 16:18ㆍDeveloper Roadmap/C++
C++ 데이터 타입 완벽 가이드 🌟
C++에서 데이터 타입(Data Type)은 변수의 값을 어떻게 해석하고 처리할지를 결정하는 중요한 요소입니다. 본 포스팅에서는 C++의 기본형(Fundamental), 파생형(Derived), 사용자 정의형(User-Defined) 타입은 물론, 정적 타이핑(Static Typing)과 동적 타이핑(Dynamic Typing)까지 모두 정리했습니다.
✅ C++ 기본 데이터 타입
int
: 정수형 (기본 4바이트)float
: 실수형, 단정도 정밀도double
: 실수형, 배정도 정밀도char
: 문자형 (1바이트 ASCII 문자)bool
: 불리언형, 참/거짓
예시:
int age = 30;
float pi = 3.14f;
char grade = 'A';
bool isReady = true;
🧩 파생 데이터 타입
- 배열 (Array): 동일 타입 값들의 집합
- 포인터 (Pointer): 변수의 주소를 저장
- 참조 (Reference): 변수의 별칭
int nums[3] = {1, 2, 3};
int* ptr = &nums[0];
int& ref = nums[1];
🛠 사용자 정의 데이터 타입
Struct (구조체)
서로 다른 데이터 타입을 하나로 묶음. 기본 접근 제어는 public.
struct Person {
std::string name;
int age;
};
Class (클래스)
구조체와 유사하지만, 기본 접근 제어는 private. 캡슐화, 상속, 다형성 등 객체지향 프로그래밍 지원.
class Person {
public:
std::string name;
int age;
};
Union (공용체)
여러 데이터 타입을 같은 메모리 공간에 저장 (동시에 하나만 유지)
union Data {
int a;
float b;
};
🧪 C++의 정적 타이핑 (Static Typing)
C++는 정적 타입 언어이므로 컴파일 시점에 타입이 결정됩니다. 타입 변환도 가능하지만, 컴파일러가 허용 가능한 경우에만 자동 변환됩니다.
int num = 65;
char ch = num; // ASCII 'A'
🔄 C++에서의 동적 타이핑
C++는 기본적으로 정적 언어이지만, 제한적인 동적 타이핑 기능을 제공합니다.
1. void* 포인터
어떤 타입이든 주소 저장 가능. 반드시 static_cast로 타입 변환 필요.
2. std::any (C++17 이상)
모든 타입을 안전하게 저장 가능.
#include <any>
std::any value = 3.14;
std::cout << std::any_cast<double>(value);
🔍 런타임 타입 식별 (RTTI)
typeid
객체의 실제 타입 정보를 얻기 위해 사용
dynamic_cast
다형성 기반에서 다운캐스팅 시 타입 확인 및 안전한 변환 가능
🔗 추천 참고 링크
✨ 마무리
C++의 데이터 타입은 단순히 값을 저장하는 그 이상의 의미를 가집니다. 정적 타입 시스템은 안정성과 성능을 제공하고, 일부 동적 기능은 유연성을 더해줍니다. 다양한 데이터 타입을 잘 이해하고 활용하는 것은 C++ 실력 향상의 핵심입니다.
'Developer Roadmap > C++' 카테고리의 다른 글
C++ 코드 구조화 제대로 이해하기 - 네임스페이스부터 헤더/소스 분리까지 (0) | 2025.06.19 |
---|---|
C++ 포인터와 레퍼런스 완전 정리 : 스마트 포인터부터 메모리 누수까지 (0) | 2025.06.18 |
C++ 함수 기초부터 람다와 정적 다형성까지 한눈에 정리 (0) | 2025.06.17 |
C++ 제어문 정리: if-else, switch, for, while, do-while 완전 이해 (0) | 2025.06.16 |
C++ 기본 연산자 총정리 - 산술, 관계, 논리, 비트 연산까지 한눈에 (0) | 2025.06.12 |