2025. 3. 12. 23:37ㆍ원티드_언리얼RPG 2기/C++

C++에서는 논리연산자의 대체 논리연산자 키워드가 존재한다.
&&,||,! 대신에 and, or ,not을 쓸수있다.
//키워드 리스트
and (&&)
or (||)
not (!)
bitand (&)
bitor (|)
compl (~)
xor (^)
and_eq (&=)
or_eq (|=)
xor_eq (^=)
not_eq (!=)
실무에서는 &&, || 등의 기호를 더 자주 사용한다고 한다.
정적으로 선언한 static 변수에 접근시 함수의 반환타입 앞에도 static을 붙여주기
정적으로 선언한 멤버변수는 클래스 외부에서 초기화 해야한다.
(단 const static으로 선언한 경우는 클래스 내부에서 초기화 가능)
#include <iostream>
using namespace std;
class Test
{
private:
static int num; //정적 멤버 변수
const static int num1; //클래스 내부에서 초기화 가능
public:
Test(){ num++; }
~Test(){ num--; }
static void ShowNum(); //정적 멤버 함수
};
int Test::num = 0; //클래스 외부에서 초기화
void Test::ShowNum()
{
cout << num << endl;
}
int main()
{
Test t;
Test::ShowNum(); // 클래스::멤버함수로 호출해야함
}
static은 왜 써야하냐
메모리 절약 및 네임스페이스 오염방지
static 전역변수,함수의 경우 파일외부의 불필요한 접근을 막기 위해서
static 멤버변수,함수의 경우 모든객체가 공유할값 저장, 객체생성없이 호출을 위해서
const static은 왜 있는걸까
불변 데이터의 중복 생성을 방지하고 메모리 최적화를 위해 사용됨.
const static 멤버변수는 static처럼 공유되는 상수를 선언한다.
하지만 객체마다 복사되지않고 메모리를 절약하면서 선언한다.
컴파일 타임 상수일경우에 inline으로 선언을 통해 헤더파일에서 정의가 가능하다.
static const는 뭔데
static const 지역변수는 함수 호출마다 초기화되지않는 불변 변수
한번만 초기화되고 이후 변경되지않으므로 메모리 절약, 불필요한 연산이 감소된다.
컴파일타임 상수 vs 런타임 상수
런타임 상수: 프로그램이 실행중일때만 초기화 값을 알 수 있는 상수
const로 선언했지만 사용자의 입력이나 함수에 전달된 값에따라 달라지는 상수
한번 초기화되면 이러한 상수 값은 변경할 수 없다.
컴파일타임 상수: 컴파일시간에 초기화 값을 확인할 수 있는 상수
컴파일할때 이미 결정되므로 런타임상수와 달리 컴파일러가 최적화를 해줄 수 있다.
컴파일타임 상수임을 알려주기 위해 constexpr 키워드를 명시적으로 붙여주자.
'원티드_언리얼RPG 2기 > C++' 카테고리의 다른 글
스택/큐/우선순위큐 (0) | 2025.04.14 |
---|---|
토요일 특강 메모 (0) | 2025.04.05 |
클래스의 관계 (0) | 2025.03.11 |
파일 입출력 (0) | 2025.03.04 |
열거형,클래스 (0) | 2025.02.27 |