본문 바로가기

C, C++

C/ C++/ 상수/const

상수(const)란?

 프로그램에서 변하지 않는 숫자나 문자를 의미한다. 만약 프로그램에서 특정 상수가 여러 번 사용된다면, 그 상수를 변수에 저장해서 사용하는 것이 편리하다. 이 때, 상수를 저장해둔 변수의 내용이 수정된다면 프로그램이 정상적으로 처리되지 않을 가능성이 매우 높아지게 된다. 때문에 이러한 상황을 막기 위해 const 를 이용하여 저장해둔 변수의 내용을 수정할 수 없도록 한다. 수정하려고 하면 에러가 발생되도록 한다. const는 다른 일반 변수와 구별하기 위해 일반적으로 모두 대문자로 만들어 사용한다. 

 C++ 에서 상수를 정의하는 방법은 다음과 같다.   "const 자료형 상수이름 = 값;"

상수는 반드시 선언과 동시에 초기화시켜야 한다.  비쥬얼 스튜디오 2017부터는 멤버 변수를 선언할 때, "=" 를 사용한 초기화가 가능하므로 상수 선언 시 "="를 사용해서 초기화시키거나 상수 선언 후 생성자의 초기화 리스트를 이용해서 초기화 시켜야 한다.

1
2
3
4
5
6
7
8
9
class Circle {
private:
    double radius = 0.0;
public:
    const int LIMIT = 100;                 
    const double PI = 3.141592;            
 
//    비쥬얼 스튜디오 2017 전에는 아래와 같이 상수를 선언만 한 후 생성자의 초기화 리스트를 사용하였다.
//    const double PI;
cs

 

 생성자에서 초기화 리스트를 사용하려면 생성자의 ")" 뒤에 ":" 을 찍고 상수이름(초기치) 형태로 적어준다. 초기화 리스트에서 초기화 시켜야 할 항목이 2개 이상이라면 "," 로 구분해서 사용하면 된다.  초기화 리스트를 사용해서 멤버 변수를 초기화 시킬 수 있다.

1
2
3
4
5
6
7
8
9
10
11
    Circle() : PI(3.141592), radius(0.0) {
 
    }
 
    Circle(double radius) : PI(3.141592) {
        this->radius = radius;
    }
 
    void toString() {
        cout << "반지름 : " << radius << endl;
    }
cs

 

예시를 들기 위해 원의 너비와 원의 둘레를 계산해서 출력하는 함수를 만든다. 
1
2
3
4
5
6
7
8
void circumference() {
        cout << "반지름이 " << radius << "인 원의 둘레는 " << 2 * PI * radius << endl;
    }
    
void area() {
        cout << "반지름이 " << radius << "인 원의 너비는 " << PI * pow(radius, 2<< endl;
    }
 
cs

 

1
2
3
4
5
6
7
8
9
10
//    PI = 1.2345;        // 상수로 사용할 변수에 저장된 값을 변경하려 했으므로 에러가 발생된다.
 
    Circle circle1;
    cout << "PI = " << circle1.PI << endl;
    circle1.toString();
 
    Circle circle2(10);
    circle2.toString();
    circle2.circumference();
    circle2.area();
cs

 

출력

'C, C++' 카테고리의 다른 글

C++/구조체  (0) 2020.01.13
C++/template/함수 템플릿/템플릿에 관하여  (0) 2020.01.13
C++/call by value, call by reference  (0) 2020.01.13
C++/달력 만들기 헤더 파일/  (0) 2020.01.10
C++/왕복버블정렬 알고리즘  (0) 2020.01.08