목록cpp (43)
Nagie's DevStory
//C int* pPtr = # //C++ int* pPtr = # //포인터 int& rRef = num; //레퍼런스 참조자(&)는 기존 C에는 없던 형식으로 C++에서 추가 됐다. 포인터와 구조적으로 비슷하지만, 겉으로 보이는 모습은 포인터와 다른 게 특징이며 포인터와 다르게 참조자를 사용하려면 선언과 동시에 반드시 초기화를 해줘야 하고 상수에는 참조자를 선언할 수 없다는 게 주 특징이다. 아래는 사용이 불가능한 대표적인 예시이다. int* pPtr = &3; //불가능 int& rRef = 3; //상수에 대한 참조는 불가능 int& rRef; //참조 원본이 없으므로 불가능
C 나 C++을 사용하는 이유 중 하나는 아마 포인터를 사용하기 위함이라고 해도 과언이 아닐듯하다. 다만 포인터라는 건 장미꽃의 가시와도 같으며 잘 사용한다면 강력하고 아름답지만. 사용법이 미숙하다면 조그마한 실수에도 치명적인 오류를 일으킨다. 그와 더불어 '포인터'라는 말은 늘 '메모리 관리'라는 말을 수식어처럼 달고 다니는데 이는 무엇보다 할당과 해제라는 관리 문제가 있기 때문이다. 그리고 새로운 방법을 보기 전 우린 C에서 사용했던 malloc()과 free()를 되짚어 볼 필요가 있다. int* dynamicArray = (int*)malloc(10 * sizeof(int)); free(dynamicArray); dynamicArray = NULL; 지금 보니 어떻게 이런 걸 사용했을까 싶을 정도..
C에서 자료형이란 '일정 크기의 메모리에 저장된 정보를 해석하는 방법' 정도로 이해하면 편하다. 클래스나 구조체 같은 사용자 정의 자료형을 제외한 기본 자료형은 C++ 역시 크게 다르지 않으며 C++ 11 표준부터 몇몇 자료형이 추가되었다. 자료형 설명 bool C++11에 추가된 자료형은 아니지만 C와는 다르게 언어단에서 지원한다. long long 64비트 정수(컴파일러에 따라 다름) char16_t 16비트 문자 char32_t 32비트 문자 auto 컴파일러가 컴파일 타임에 자동으로 타입을 추론함 decltype(expr) expr과 동일한 자료형
//C++ int num(10); double pi(3.14); //C int num = 10; double pi = 3.14; C++부턴 변수라는 명칭을 사용하는 걸 그다지 권장하지는 않는다고 한다. 인스턴스(Instance)라는 말을 자주 사용하고 익숙해져야 한다. 인스턴스의 사전적 의미는 '예시' 또는 '경우'인데 이렇게만 말하면 솔직히 말해서 쉽게 와닿지는 않는다. 이 글을 작성하고 있는 필자 역시 이해가 힘들었는데 마침 잘 설명한 예시가 있어서 여기에 인용한다. int a; 사람 철수; C++에서 a는 int 자료형에 대한 인스턴스라고 했을 때 철수는 사람이라는 유형의 동물에 대한 인스턴스라고 볼 수 있는것이다. 이처럼 C++를 포함해 객체지향 프로그래밍 환경에선 모든 것을 다 객체로 표현하고 ..
//C++ short nSelectType = 0; std::cin >> nSelectType; //C short nSelectType = 0; scanf_s("%d",&nSelectType); cin은 C++에서 입력을 위해 사용되는 객체다. 입력받는 값에 대해 타입 안전성(type safety)을 제공하며 cin을 사용할 때 데이터 형식을 자동으로 변환하고 유효하지 않은 입력을 처리하는 기능이 내장되어 있다. 또한 scanf와는 다르게 타입 형식에 대한 서식 지정자를 사용하지 않는다. printf는 C에서 입력을 위해 사용되는 함수다. 입력받는 값에 대해 cin과 다르게 타입 안전성(type safety)을 제공하지 않으며 프로그래머가 직접 서식 지정자에 따라 데이터를 읽고 변환시켜야 한다. 이 둘 ..