본문 바로가기

반응형

const

(3)
[C++] constexpr 상수 들어가며 이번 포스트에서는 C++11 부터 새로이 추가된 constexpr 키워드에 대해 살펴 보도록 하겠다. 먼저 constexpr에 대해 이해하기 위해서는 기존 C++의 const에 대해 먼저 이해 해야할 필요가 있다. 아래 예제를 살펴 보자. int main() { const int c1 = 10; c1 = 20; // error! } 위 예제는 간단하게 const 상수를 정의하고 값을 변경하고 있다. C++에서 const 한정자로 정의된 변수는 값을 바꿀수 없음을 의미하므로 위 코드를 컴파일 하게 되면 에러가 발생하게 된다. 그리고 C++11 부터 상수를 만드는 또 다른 키워드인 constexpr이 등장한다. constexpr c2 = 10; c2 = 20; // error! constexpr 역..
[C#] CONST와 READONLY의 차이 C#에서 READONLY와 CONST의 차이는 무엇일까? 변수가 단순히 읽을 수만 읽고 변경이 불가능하다는 '상수'를 정의하는 것이라면 둘 다 같은 것인가? 대답은 당연히 '아니오'다. 만일 같다고하면 이 포스트는 시작도 하지 않았을 것이다. 그렇다면 둘의 차이는 무엇인가? 가장 기본적인 부분에서 부터 출발해보자. 일단 겉보기에는 둘다 같은 기능을 가졌지만 이름만 다른것 처럼 보인다. 하지만 우리가 이 둘의 차이를 제대로 이해하지 못하고 남발하게 되면 꽤나 심각하고 많은 문제을 일으키게 될 가능성이 높다. C#에서 상수를 정의하기 위해서는 아래와 같이 사용한다. public const double PI = 3.14; const 한정자는 컴파일러에게 이 변수는 할당 된 값을 절대 변경하지 않을 것임을 알려..
[C++] const 와 mutable 키워드 이번 포스트는 변수를 상수화 시켜 코드에서 변수의 값을 변경하려고 할 경우 컴파일 타임에 에러를 발생 시키는 const 키워드와 const를 무효화 시킬 수 있는 mutable 키워드에 대해 살펴 보도록 하겠다. C++에서는 절대 변경 되어서는 안되는 변수(변수라는 것 자체가 변경을 할 수 있다는 의미인데 그것을 변경하지 못하게 막겠다는게 개념적으로 아이러니 하긴하지만)에 const라는 한정자를 더해, 변수를 변경하려고 시도 할 경우 컴파일 타임에 감지하여 에러를 발생 시킨다. const 이전에는 #define 전처리 명령어를 이용했지만 전처리 명령어를 이용하는 것은 스코프를 한정 할 수도 없고, 타입에 대한 제약도 없어 여러 모로 실수를 만들 요소를 가지고 있다. 하여 const 키워드 이후 부터는 상..

반응형