LANGUAGE/C++
[C++] CONST
진심스테이크
2018. 3. 8. 10:50
const
#레퍼런스 변수는 한번 참조하면 바꿀 수 없기 때문에 선언과 동시에 초기화를 해야한다
const도 레퍼런스와 마찬가지로 선언과 동시에 초기화를 해줘야한다
필드는 문법적으로 초기화를 시키지 못하기 때문에 콜론 초기화를 해준다
사용 목적
주로 사용자 캡슐화 목적으로 사용
1. Field - 필드
- 선언과 동시에 초기화를 해줘야 하는데 할 수가 없다
- 콜론 초기화 기법을 사용한다
- 깂을 읽기만 가능하다
# 콜론 초기화 : const와 필드 초기화
- this 대신에 사용하는 개념
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
class A {
const int a;
int b;
public :
A():a(10), b(20){ //생성자 먼저 동작 -> a에 10을 먼저 넣음
//a = 10; //오류 : 초기화가 되어있지 않음
//b = 20;
}
void disp() {
cout << a << "\t" << b << endl;
}
};
void main() {
A aa;
aa.disp();
}
2. Method - 메소드
- 필드 값을 바꾸지 않겠다 -> 함수 내에서 필드 값을 바꾸지 못함
- 필드의 값을 함수에서 읽기만 가능하게 한다 -> 쓰기 금지
3. Object - 객체
- 객체 값을 고정해서 쓰겠다 -> 읽기만 가능
- const는 const 끼리만 부를 수 있고, 사용 할 수 있다
- 같은 성질로 우선순위
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
class A {
const int a;
int b;
public :
A():a(10), b(20){ //생성자 먼저 동작 -> a에 10을 먼저 넣음
//a = 10; //오류 : 초기화가 되어있지 않음
//b = 20;
}
void disp() const{
//b = 30; //값을 바꾸지 못함
cout << a << "\t" << b << endl;
}
void disp() { //일반이 우선적
cout << "일반" << endl;
}
};
void main() {
A aa;
aa.disp();
}
const 멤버 함수는 많이 쓸수록 안정적이다
지역변수는 자유롭게 쓸 수 있다