본문 바로가기

c++/Study

Class 공부 2, +const

Class 코드에 적용하기

간단한 예제로 적용시키자.

 

calc.h

calc.cpp

 

선언을 calc.cpp를 새로 만들어서 다 몰아 넣었다. 이렇게 굳이 안하고 calc.h에 정의도 함께 해도 상관없다.

 

2. class 객체도 const 가능

- set, get 둘다 불가능

- 가능하게 하려면 reuturn 함수에 const 붙여야됨

 

3. copy constructor

: runnable에서 class를 인수로 받아서 쓸때, 복사는 해오지만, 이 copy constructor를 사용해서 복사본 생성해서 runnable 안에서 사용한다.

 

근데 사실 copy 하는게 메모리가 아깝기 때문에 class를 받아서 runnable에서 사용할때는 웬만하면 const reference 사용!

 

4. const 공부
참고)https://blog.codingcat.kr/24
우선 const는 들어갈 수 있는 위치가 많다

const 자료형 const 포인터 const 변수명;

 

ex)

1) const int ** foo; -> (const int) ** foo;

const int a =10;

const int * b = &a;

const int **c = &b;

-> 알맹이인 a가 상수처리!

 

2) int * const * foo -> (int* const) * foo;

int a =10;

int * const  b = &a;

int * const  *c = &b;

->이 경우에 알맹이인 a는 변경가능!

-> 알맹이의 주소값(b)을 변경 못하게 하겠다는 것

 

3) int ** const foo -> (int **) const a;

-> 이경우 이중포인터만 상수 처리

 

간단 정리(이중 포인터 XX)

1) 알맹이가 상수

- a 값을 못바꿈

- 주소를 바꿀 수는 있음

 

2) 참조해주는 변수를 못바꾸게 하는것

알맹이를 직접 바꾸는건 가능하지만, 포인터 참조를 통해서는 XX

-> 가리키고 있는 주소에 있는 값을 안바꾼다는 뜻이지, 주소값을 안바꾼다는 소리는 아님!!!!

3) 포인터 자체가 const

-> 진짜 주소값을 못바꾸는 경우

 

찐찐 최종 정리

1. * 뒤에 const가 붙으면 주소값을 못바꾸는것

2. * 와 자료형 앞에 const가 붙으면 참조를 통한 변화를 막겠다는 것

3. 포인터가 가르키는 값에 const가 붙어 있다면, *와 자료형 앞에 const를 붙여야 된다(강제)

'c++ > Study' 카테고리의 다른 글

상속  (0) 2021.05.25
객체간 관계  (0) 2021.05.24
연산자 오버로딩  (0) 2021.05.24
Class - 3  (0) 2021.05.24
CLASS, Struct 공부 1  (0) 2021.05.23