일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 25.06.11dir
- uaiperception
- 자료구조
- DX
- bttask
- 게임개발
- directx
- 언리얼ai
- 각도변환
- c++class
- 언리얼엔진공부
- leveleditor
- 프로그래밍일기
- livrary
- 자료구조정리
- 월드아웃라이너
- 언리얼엔진
- c++용어정리
- 언리얼엔진5
- c++
- 영단어정리
- 게임엔진튜토리얼
- c언어정리
- 언리얼비헤이어비어트리
- c++porinter
- 프로그래밍
- unrealengineai
- 수학용어정리
- 자료형타입
- ipc(inter process communication)
- Today
- Total
루리코딩 세상
C++ : 자료형, 연산자, 지정자, 생성자, 소멸자 관련 정보 정리 본문
추가하는 내용에 있어서 혼동이 되는 개념을 명확하게 정리하고자, 수정을 번복하고 있는 포스팅입니다.
자료형(type), 연산자(operator), 지정자(specifier)로 정확한 개념은 함수를 읽는데 더 많은 도움을 줄 것이다.
자료형 (Data Types)
자료형은 데이터의 크기와 종류를 정의한다. 변수는 메모리에서 어떤 형태로 저장되고 처리될지를 자료형으로 결정하는 것이다.
--25.05.30 이전에 작성한 내용, 틀린 내용은 다시 읽으면서 명확하게 개념을 정리하자.
자료형은 프로그래밍에서 변수가 저장할 수 있는 데이터의 종류를 나타낸다..
각 자료형은 데이터의 크기, 범위, 연산 방식 등을 정의하며, 이를 통해 프로그래밍 언어는
데이터를 효과적으로 처리 할 수 있다. 자료형의 종류는 정수형, 실수형, 문자형, 논리형이 존재한다.
변수는 무엇인가?
byte
비트 (bit)는 binary digit (2진법)으로 컴퓨터가 처리 할 수 있는 단위의 최소값을 의미한다.
0, 1로 이루어져 있고 참과 거짓으로 True / false로 볼 수 있다. 비트의 개념은 켜거나 끌 수 있는 전기 스위치를 연상하면 좋다.
전기가 켜진 상태는 값 1, 전기가 꺼진 상태는 0.
8비트는 2x 2x 2x 2x 2x 2x 2x 2 = 256의 경우의 수를 나타 낼 수 있음. 0~255/-128~127
자료형의 종류와 각 자료형들의 특징
데이터 형식과 크기 //특성?
종류 | 명령어 | 크기 | 설명 |
정수형 | int | 4 Byte | |
short | 2 Byte | ||
long | 8 Byte | ||
실수형 | float | 4 Byte | |
double | 8 Byte | ||
문자형 | char | 1 Byte | |
논리형 | boolean | ||
기타 | 배열/객체/구조체 등 복합적인 자료형도 존재함 | ||
unsigned | 부호없음 |
서식 지정자
format string - String의 static 메서드인 format 메서드는 문자열의 형식을 설정하는 메서드 |
||
%d (10진수 형식) int | Integer Formatting | 정수형 상수 |
%u | Unsigned | Unsigned 10진 정수로 출력한다. |
%s | String Formatting | 문자 스트링 - 문자열을 출력한다. |
%f | Floating point Formatting | 실수형 상수 float 고정 소수점 형식의 실수로 출력한다. |
%if | 실수형 상수 double | |
%t | DateTime Formatting | |
%c | 문자형 char | |
%o, %x(8진수, 16진수 형식) | Octal, heXadecimal | 8진 정수로 출력한다. 16진 정수로 출력한다. 대문자 X를 쓰면 A~F까지의 숫자도 대문자로 출력된다. |
Locale 설정 | String.format(포맷, 값) | |
%% | %문자 자체를 출력한다. |
- sizeof
이스케이프 시퀀스(escape sequence) | ||
이스케이프 시퀀스 | 출력 내용 | |
\' | ||
\" | ||
\? | ||
\\ | ||
\a | ||
\b | ||
\n | ||
\r | ||
\t | ||
\v | ||
\f | 폼 피드(form feed) | 다음 페이지로 출력 |
연산자 (Operators)
C언어에서 연산자는 데이터에 대해 어떤 작업을 수행할지 지정하는 기호이다.
다양한 종류의 연산자가 있으며, 각 연산자는 특정 기능을 수행한다. 주요 연산자 종류는
산술 연산자, 대입 연산자, 증갑 연산자, 관계 연산자, 논리 연산자 등이 있다.
산술 연산자 | ||
+ | 더하기 | 두 연산자의 값을 더합니다. |
- | 빼기 | 두 연산자의 값을 뺍니다. |
\* | 곱하기 | 두 피연산자의 값을 곱합니다. |
/ | 나누기 | 두 연산자의 값을 나눕니다. |
% | 나머지 | 두 피연산자를 나눈 후 나머지를 구합니다. |
+, - | 단항 부호 연산자 | 피연산자의 부호를 나타냅니다. |
대입 연산자 | ||
= | 오른쪽에 있는 값을 왼쪽에 있는 변수에 대입합니다. | |
+=, -=, \*=, /=, %= | 복합 대입 연산자 | 산술 연산과 대입을 동시에 수행합니다. |
증감연산자 | ||
\++ | 피연산자의 값을 1증가시킵니다. | |
-- | 피연산자의 값을 1 감소시킵니다. |
관계 연산자 | ||
== | 두 피연산자가 같은지 비교합니다. | |
!= | 두 피연산자가 다른지 비교합니다. | |
< | 첫번째 피연산자가 두번째 피연산자보다 작은지 비교합니다. |
|
<= | 첫번째 피연산자가 두번째 피연산자보다 작거나 같은지 비교합니다. |
|
> | 첫번째 피연산자가 두번째 피연산자보다 큰지 비교합니다. |
|
>= | 첫번째 피연산자가 두번째 피연산자보다 크거나 같은지 비교한다. |
생성자(Constructor)와 소멸자(Destructor)는 C++에서 클래스를 사용할 때 중요한 개념이다.
생성자는 클래스의 객체가 생성될 때 호출되는 함수로, 초기 값을 설정하는 등의 작업을 수행한다.
다양한 형태의 생정자를 제공함으로써 다양한 상황에 대응할 수 있다.
소멸자는 객체가 메모리에서 해제될 때 호출되는 함수로, 객체의 생명 주기가 끝나기 전에
마무리 작업을 수행한다. 이를 통해 메모리 누수와 같은 문제를 예방한다.
클래스의 안정성과 효율성을 보장하는 핵심 구성요소이다.
생성자는?
C++에서, 생성자는 클래스의 인스턴스가 생성될 때 자동으로 호출되는 특별한 함수다.
C언어와 달리 C++에서 클래스와 OOP의 핵심 구성요소이다. 클래스를 정의할 때 우리는 생성자를 이용해
객체가 어떻게 초기화되는 지 결정 할 수 있다.
"생성자는 클래스와 동일한 이름을 가지며, 리턴 타입을 명시하지 않는다."
다양한 형태의 생성자가 존재하는데, 다음과 같다.
- Default Constructor (기본 생성자) : 매개변수가 없는(인자가 없음) 생성자, 컴파일러가 자동으로 만듬
class A {
public:
A() { } // ← 기본 생성자
};
- Defaulted Constructor (기본 정의 생성자) : 기본 생성자가 필요하지만, 다른 생성자를 정의하거나,
클래스 내부 상황으로 컴파일러가 자동으로 생성해주지 않을때, 명시적으로 생성하는 문법
class A {
public:
A() = default; // 기본 생성자를 명시적으로 지시
A(int x) { this->x = x; }
};
- Parameterized Constructor (매개변수 생성자)
- Copy Constructor (복사 생성자)
- Move Constructor (이동 생성자) : C++11부터 도입된 생성자, 리소스를 복사하지 않는다. 기존 리소스의 소유권을 이동시켜 객체를 생성한다.
class MyClass {
public:
int* data;
MyClass(MyClass&& other) noexcept {
data = other.data;
other.data = nullptr;
}
};
- Delegating Constructor (위임 생성자) : 자기 클래스의 다른 생성자를 호출하는 생성자이다.
class MyClass {
int x, y;
public:
MyClass(int a) : MyClass(a, 0) {} // 위임
MyClass(int a, int b) : x(a), y(b) {} // 실제 초기화 수행
};
- Explicit Constructor (명시적 변환 생성자) : 자동 형 변환을 막기 위해 사용한다.
class MyClass {
public:
explicit MyClass(int x) { /*...*/ }
};
MyClass a = 10; // ❌ 오류: 암시적 변환 안 됨
MyClass b(10); // ✅ 정상
- Conversion Constructor (암시적 변환 생성자) : 단 하나의 인자를 받는 생성자로, 다른 타입을 해당 클래스 객체로 암시적 변환 가능하다. 단 explicit 키워드가 없을 경우에만 암시적 변환 발생
class MyClass {
public:
MyClass(int x) { /*...*/ } // int → MyClass 암시적 변환 가능
};
void func(MyClass m) {}
func(5); // 암시적으로 MyClass(5)로 변환
- Deleted Constructor (삭제된 생성자) : 해당 생성자의 사용을 금지하고 싶을 때 delete로 명시
class MyClass {
public:
MyClass() = delete; // 기본 생성자 금지
};
##기타 생성자 관련 개념##
- Templated Constructor (템플릿 생성자) : 다양한 타입에 대해 일반화된 생성자이다.
클래스 자체가 템플릿이 아니더라도 생성자만 템플릿으로 만들 수 있다.
class MyClass {
public:
template <typename T>
MyClass(T value) {
// 다양한 타입을 받아 생성
}
};
- Private Constructor (비공개 생성자) : 생성자를 private으로 선언해 외부에서 직접 객체 생성을 못하게 막는다.
주로 싱클톤 패턴, 정적 팩토리 사용시 활용한다.
class Singleton {
private:
Singleton() {} // 외부에서 new 불가
public:
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
};
- Static Factory Constructor
생성자는 아니지만, 생성자 대신 정적 메서드로 객체를 생성하는 패턴이다
내부적으로는 생성자를 호출하지만, 사용자는 메서드만 접근한다
class User {
private:
User(std::string name) : name(name) {}
public:
static User create(std::string name) {
return User(name);
}
};
소멸자란?
C++에서 클래스의 객체가 메모리에서 제거될 때 자동으로 호출되는 함수이다. 클래스의 주기를 관리하는데 중요한 역할을 한다. 생성자와 같이 클래스의 동일한 이름을 가지지만, 호출하는 앞에 '~' 표시가 붙는다. 소멸자는 매개변수를 가질 수 없으며, 하나의 클래스 안에서 하나만 가질 수 있다.
- 연산자 개념 모호한 부분 25.05.30 해당 내용 추가..
- 생성자와 소멸자 25.06.01 추가
'이론 > C++' 카테고리의 다른 글
STL (Standard Template Library) (0) | 2025.05.11 |
---|---|
C++ 라이브러리 (0) | 2025.05.09 |
string CLASS (0) | 2025.05.09 |
sizeof 연산자 (0) | 2025.05.09 |
C++ : 단축키 모음 (0) | 2025.05.08 |