C++ (5) 썸네일형 리스트형 Const const 는 데이터 선언을 할 때 객체 또는 변수를 수정할 수 없음을 지정하는 수식어로, 해당 값이 상수임을 지정하고 코드 상에서 수정할 수 없도록 컴파일러에서 세팅하게 됩니다. C++ 에서 정의된 const 값은 상수 식 대신 사용할 수 있습니다. const int maxarray = 255; char store_char[maxarray]; // allowed in C++; not allowed in C 멤버 함수를 const 로 선언하면 호출되는 객체 또는 변수를 수정하지 않는 "읽기 전용" 함수임을 지정합니다. 상수 멤버 함수는 비정적 데이터 멤버를 수정하거나 상수가 아닌 멤버 함수를 호출할 수 없습니다. 상수 멤버 함수를 선언하려면 인수 목록의 닫는 괄호 뒤에 const 를 선언해야 합니다. 즉.. Pointer - vs - Reference 포인터 ( Pointer ) 는 개체의 메모리 주소를 저장하는 변수입니다. 즉, 어떠한 데이터가 메모리에 저장될 때, 데이터가 시작되는 주소가 포인터 변수에 담기게 되는 것입니다. 참조 ( Reference ) 는 포인터와 마찬가지로 데이터의 주소를 저장하긴 하지만, 포인터와는 달리 초기화되고 나면 다른 개체를 참조하거나 Null 로 설정하는 것이 불가능합니다. 둘의 차이는 매개변수를 전달하는 방식에서도 확인할 수 있습니다. 일반적으로 매개변수를 포인터로 사용하면 Call by Address 라고 하고, 레퍼런스로 사용하면 Call by Reference 라고 합니다. Call by Address 일 경우 void CallByAddress(int* address) { *address = 20; std::.. 전위 연산자 vs 후위 연산자 전위(prefix) 연산자와 후위(posfix) 연산자의 차이는 보통 연산을 하는 시점으로 나눕니다. 말 그대로 전위 연산자는 해당 연산을 수행한 후에 작업을 진행하는 것이고, 후위 연산자는 작업이 끝난 후에 연산을 수행하는 것이라고 보통 알고 있습니다. 하지만 후위 연산자에서 작업이 끝난 후에 연산을 수행한다는 것은 언뜻 보면 연산자의 우선순위가 지켜지지 않는다는 것으로 느껴질 수 도 있습니다. 그러나 후위 연산자의 구현을 살펴보면 연산자 우선순위가 지켜지지 않는 것은 아닙니다. 아래는 전위 연산자의 후위 연산자의 구현 부분입니다. class Point { public: Point() :_value(0) {}; // 1. 전위 증가 Point& operator++() { this->_value += 1.. Const Const는 변수의 앞에 선언되어 변수의 값이 상수임을 지정하고 프로그래머가 수정하지 못하도록 컴파일러에 지시합니다. 이는 곧 임의로 수정되면 안되는 변수에 쓰이면서 Read-Only임을 강조하는 것과 같습니다. // constant_values1.cpp int main() { const int i = 5; i = 10; // C3892(ERROR) i++; // C2105(ERROR) } 함수 인자 전달 시에 Const& 형식으로 전달하는 것을 보통 권장합니다. 그 이유는 아래에서 알아볼 수 있습니다. - 먼저 객체를 인자로 사용하는 경우 (pass by value) 값에 의한 전달방식은 인자의 원본을 사용하는 것이 아닌 복사하여 사용하므로 임시 복사본을 생성합니다. 이 때문에 부가적인 할당과 메모리 .. Vector - vs - Array Array는 같은 타입의 변수들로 이루어진 집합입니다. Array는 동적 할당으로 실행 시간에 크기를 지정하지 않는 이상 정해진 크기를 가지고 있습니다. 그리고 인덱스를 통해 배열 원소에 접근하기 때문에 인덱스를 알고 있는 임의의 원소에 대한 접근 및 수정은 O(1)의 시간 복잡도를 갖게 됩니다. 따라서 Array는 인덱스를 알고 있을 때 접근 및 수정에 매우 빠른 속도를 갖습니다. 백준이나 프로그래머스에서 알고리즘 문제를 풀 때 배열의 최대 크기를 알 수 있으면 Array를 사용하는 것도 이러한 이유입니다. Vector는 Array 기반의 컨테이너로써 크기를 지정할 수 있는 가변 배열로 힙 영역에 동적 할당됩니다. Vector는 기본적으로 선언할 때 크기를 지정하지 않으면 컴파일 환경에 따른 임의의 크.. 이전 1 다음