[C++] const char* str와 char* const str의 차이
·
C++
const char* str와 char* const str는 둘 다 char* 포인터를 사용하는데,const의 위치에 따라 무엇이 상수(constant) 인지가 달라집니다. 1. const char* strconst char* str:"포인터가 가리키는 데이터(char)가 상수"즉, 값을 바꿀 수 없습니다.뜻: str은 char를 가리키는 포인터이고, 가리키는 char 값은 바꿀 수 없습니다.가리키는 값이 상수입니다.사용 예: str이 읽기 전용 문자열을 가리키도록 하고 싶을 때2. char* const strchar* const str:"포인터 자체가 상수"어디를 가리키는지는 못 바꿉니다.뜻: str은 char를 가리키는 포인터이고, 포인터 자체는 바꿀 수 없습니다.포인터가 상수입니다.사용 예: str..
[C++] 연산자 오버로딩 복습 문제 (클래스부터 생성자, 오버로딩까지 구현해보자)
·
C++
문제 1: RPG 장비 클래스 설계문제 설명게임 캐릭터가 장착할 수 있는 다음 4가지 아이템 클래스를 정의하려고 합니다.각 클래스는 체력(HP), 마력(MP), 민첩성(AGI), 행운(LUK)의 능력치를 가지고 있으며, 생성자를 통해 초기화되어야 합니다.다음 조건에 맞게 Clothing, Shoes, Cloak, Accessory 클래스를 각각 정의하시오.요구 사항각 클래스는 다음 멤버 변수를 가져야 합니다:int hp, int mp, int agi, int luk생성자에서 능력치 값을 임의로 초기화하세요.예: Clothing: 체력 10, 마력 5, 민첩성 3, 행운 1 등생성자의 종류는 두 가지여야 합니다. 예를들어 1) 임의로 자동 초기화 Clothing() 2) 매개변수로 전달Clothing(in..
[C++] 2차원 배열 선언과 동시에 초기화 vs 선언된 배열 초기화 : 재초기화 오류
·
C++
선언과 동시에 초기화하는 형태 이건 선언과 동시에 초기화하는 형태이며, C++에서 완벽하게 허용되는 문법이다.이미 선언된 배열에 초기화하는 형태반복문으로 직접 값 대입하는 방법이다.주의사항: 재초기화 오류재초기화 코드는 다음과 같다. 이미 선언된 배열을 반복문으로 대입하지 않고, { }으로 재초기화하려고 하여 오류가 발생한다.차이점 정리코드 형태 의미 허용 여부int arr[2][4] = { ... };선언과 동시에 초기화 가능arr[2][4] = { ... };이미 선언된 배열에 재초기화 시도 에러 ("initializer too many") 배열을 선언과 동시에 초기화 → OK배열을 이미 선언한 후 다시 초기화하려고 하면 → 컴파일 에러
[C++] 지역 변수(Local Variable) 이름(변수명)과 전역 변수(Global Variable) 이름(변수명)이 같을 경우: Shadowing에 대해서
·
C++
C++에서는 전역 변수와 지역 변수의 이름이 같아도 오류가 나지 않는다.하지만 같은 이름일 경우, 지역 변수가 전역 변수를 가린다 (Shadowing). 예시:이 경우, 지역 변수와 전역 변수의 이름이 같다.func() 함수 안에서 value는 지역 변수 5를 출력하며,전역 변수 10은 "가려져서"(Shadowing) 출력되지 않는다.전역 변수를 꼭 사용하고 싶다면?전역 변수와 지역 변수의 이름이 같아도 :: 연산자 (스코프 연산자) 를 사용하면 전역 변수에 접근할 수 있다.요약항목 설명가능 여부전역 변수와 지역 변수 이름 같아도 가능우선순위지역 변수가 우선 (전역 변수를 가림)전역 변수 접근법::변수명 (예: ::value)하지만 이름이 겹치면 코드 가독성이 떨어지므로, 실무에서는 보통 피하는 것이 좋다.