const와 객체 - 멤버변수상수화,멤버함수상수화,객체상수화

1.const 사용방법(복습)

const int n1 = 10;         //변수를 상수화
const int* n2; //n2가 가르키는 값이 상수
int* const n3 ; //n3가 가리키는 주소값이 상수
const int* const n4 ; //둘다 상수

//const 이상한 사용법(되긴 된다)
int a = 10;
int b = 20;
int const * n5 = &a; //n5가 가르키는 값이 상수
p = &b;                                     //상관없음
*p = 30;                                    //에러!!!

const int const * p; //값의 상수화를 두번함( 경고뜸 )



2.객체와 const의 관계
 
1.멤버변수를 const로 상수화 -> 반드시 초기화 리스트로 초기화 시켜줘야함 (생성자에서 대입할수 없음)
 
2.멤버함수를 const로 상수화 -> 1.이 함수를 외부에서 호출했을때 이 함수로 멤버변수를 변경할 수 없음.
         2.또한, 상수화된 함수는 다른 상수화 되지않은 멤버함수를 부를수 없음
         3.또한, 상수화된 함수는 멤버변수의 주소값을 리턴 할 수 없다.
                                                   ( 리턴하기 위해선 함수 리턴값에 const로 넣어줘야함 )
 


3.객체를 const로 상수화 시켜서 선언해서 사용할 경우 ->
 1) 객체가 상수화되면, 어떠한 경로를 통해서든 멤버 변수의 조작이 불가능.
 2) 상수화된 멤버 함수만 호출 가능
     (일반 멤버 함수는 멤버 변수를 조작하지 않더라도 호출 불가능.)

이 글을 공유하기

댓글

Designed by JB FACTORY