C++ 에서 변수 앞에 const를 붙여 상수화가 되어, 그 값을 변경하지 못하게 한다.
변경하지 않아야 하는 변수에 엉뚱한 값을 할당하여, 에러가 발생할 경우 찾아내기가 쉽지 않다.
const 선언은 코드의 안정성을 높이기 위한 것이다.
https://www.youtube.com/watch?v=pFo84VEZCAM 에 const 동영상 강좌 설명이 참 잘 되어 있다.
C언어의 문법과 C++ 문법이 동일한 것은 C언어 강좌를 들어서 이해하는 것이 좋을 거 같다. 유튜브의 다양한 강좌를 들어보고 가장 마음에 들고 좋은 건 링크를 걸어서 적어둔다.
const 변수타입 변수명 = 초기화 값; // 선언시 초기화 값을 넣어야 된다. 값을 변경할 수 없다.
ex) const double PI = 3.14139;
const 변수타입 *변수명; // 변수명(포인터)이 가리키는 주소의 값을 변경할 수 없다.
#include <iostream> using namespace std; int main() {     int* pta;     int a = 10;     pta = &a;     *pta = 5;
      cout << "*pta : " << *pta << endl;     cout << "a : " << a << endl;
      const int* ptb; // 변수명이 가리키는 주소의 값을 상수화 → 포인터가 가리키는 값을 상수화     int b = 20;     ptb = &b;     //*ptb = 12; // 컴파일 에러. ptb가 가리키는 주소의 값이 상수화되어 변경할 수 없다.     b = 30; // 값은 변경할 수 있다.
      cout << "*ptb :" << *ptb << endl;
      int c = 15;     ptb = &c; // 포인터 변수에 다른 주소를 할당할 수는 있다.     cout << "*ptb :" << *ptb << endl; } 
  | 
변수타입 * const 변수명 = 초기화값; // 포인터 변수를 상수화한다.
#include <iostream> using namespace std; int main() {     int a;     int* const pta = &a;     int b;     *pta = 10; // pta 가 가리키는 주소의 값을 변경할 수 있다.     pta = &b; // 컴파일 에러. pta (포인터)가 가리키는 주소가 상수화되어 변경할 수 없다. }   | 
const 변수타입 * const 변수명 = 초기화 값; // 변수명이 가리키는 주소와 그 주소의 값도 변경할 수 없다.
#include <iostream> using namespace std; int main() {
      int a;     const int* const pta = &a;     int b;     a = 15; // 직접 값을 변경할 수 있다.     *pta = 10; // 컴파일 에러. pta 가 가리키는 주소의 값이 상수화되어 변경할 수 없다.     pta = &b; // 컴파일 에러. pta 가 가리키는 주소가 상수화되어 변경할 수 없다.
  } 
   | 
메소드의 상수화
#include <iostream> using namespace std;
  class Account { private:     int money; // 멤버 변수 public:     Account() : money(0) {}     Account(int money) : money(money) {}
      void Deposit(const int d) { // 매개변수 상수화         money += d;         cout << d << "원을 예금" << endl;     }
      void Withdraw(const int d) { // 매개변수 상수화         if (money >= d) {             money -= d;             cout << d << "원을 인출" << endl;         }     }
      int viewMoney() const { // 메소드의 상수화         // money++; // 컴파일 에러. 멤버 변수 값을 변경할 수 없다.         return money;     } };
  int main() {
      Account account(1000);
      cout << "잔고 : " << account.viewMoney() << "원" <<endl << endl;
      account.Deposit(1000);
      cout << "잔고 : " << account.viewMoney() << "원" << endl << endl;
      account.Withdraw(500);
      cout << "잔고 : " << account.viewMoney() << "원" << endl << endl;      }   |