상수 값
해당 const 키워드 지정 변수 값은 상수 이므로 프로그래머가를 수정 하지 못하게 하도록 컴파일러에 지시 합니다.
// constant_values1.cpp
int main() {
const int i = 5;
i = 10; // C3892
i++; // C2105
}
C + +에서 사용할 수 있는 const 키워드 대신의 # define 상수 값을 정의 하는 전처리기 지시문입니다.정의 된 값 const 형식 검사 될 수, 및 상수 식 대신 사용할 수 있습니다.C + +에서 배열 크기를 지정할 수 있습니다 한 const 변수는 다음과 같습니다:
// constant_values2.cpp
// compile with: /c
const int maxarray = 255;
char store_char[maxarray]; // allowed in C++; not allowed in C
C 상수 값은 기본 외부 링크를 따라서가 소스 파일에만 나타날 수 있습니다.상수 값은 기본 내부 링크에는 C++에서 헤더 파일에 나타날 수 있습니다.
해당 const 키워드 포인터 선언에도 사용 될 수 있습니다.
// constant_values3.cpp
int main() {
char *mybuf = 0, *yourbuf;
char *const aptr = mybuf;
*aptr = 'a'; // OK
aptr = yourbuf; // C3892
}
로 선언 된 변수에 대 한 포인터 const 도로 선언 하는 포인터 할당 될 수 있습니다 const.
// constant_values4.cpp
#include <stdio.h>
int main() {
const char *mybuf = "test";
char *yourbuf = "test2";
printf_s("%s\n", mybuf);
const char *bptr = mybuf; // Pointer to constant data
printf_s("%s\n", bptr);
// *bptr = 'a'; // Error
}
Output
test
test
함수 포인터를 통해 전달 되는 매개 변수를 수정 하지 못하게 하려면 함수 매개 변수로 포인터 상수 데이터를 사용할 수 있습니다.
선언 되는 개체에 대 한 const에 호출할 수 있습니다 상수 멤버 함수.이렇게 하면 상수 개체를 절대로 수정 됩니다.
birthday.getMonth(); // Okay
birthday.setMonth( 4 ); // Error
비상수 개체에 대 한 함수 상수 또는 비상수 멤버를 호출할 수 있습니다.사용 하 여 멤버 함수 오버도 로드 하는 const 키워드입니다. 이 상수와 비상수 개체에 대해 호출 하는 함수를 다른 버전이 있습니다.
생성자 나 소멸자를 선언할 수 없습니다. 해당 const 키워드입니다.
C 및 C++ 상수 차이
변수로 선언 const 는 C 소스 코드 파일에는 이렇게.
const int i = 2;
다음이 변수에 다른 모듈에는 다음과 같이 사용 하면 됩니다.
extern const int i;
하지만 C++에서 동일한 동작을 얻으려면 하면 선언 해야 하면 const 변수를:
extern const int i = 2;
선언 하려는 경우에 extern 변수에서 사용 하는 C 소스 코드 파일에서 사용할 C++ 소스 코드 파일.
extern "C" const int x=10;
이름에 C++ 컴파일러에 의해 관리 되지 않도록.