예제 코드
int GetX() const;
int GetY() const;
void ShowRectInfo() const;
"이 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다!"
따라서 const 선언이 추가된 멤버함수 내에서 멤버변수의 값을 변경하는 코드가 삽입되면
컴파일 에러가 발생한다.
또 다른 특징
"const 함수 내에서는 const가 아닌 함수의 호출이 제한된다!"
2012년 12월 20일 목요일
참조자와 포인터 정리
*참조자는 선언과 동시에 변수를 참조해야 한다.
int num =20;
int &ref =20;(X)
int &ref;(X)
int &ref = NULL;(X)
int &ref = num;(O)
- #include
- using namespace std;
- int& ReferenceReturn(int &ref);
- int IntTypeReturn(int &ref);
- int IntTypeReturn(int &ref)
- {
- ref++;
- return ref;//*****함수가 반환이 되면 정작 지역변수 ref는 소멸이 된다. 따라서 지역변수를 참조형의 변수에 저장하는 일은 없어야 한다.
- }
- int& ReferenceReturn(int &ref)
- {
- ref++;
- return ref;
- }
- int main(void)
- {
- int num1=1;
- //반환형이 참조형인 ReferenceReturn함수는 반환값을 다음과 같이 두가지 형태로 저장할 수 있다.
- int &num2 = ReferenceReturn(num1);//num2라는 별칭이 추가된다.
- //int &num2 = ref// 와 동일
- int num3 = ReferenceReturn(num1);//&num1이 가리키는 값을 저장한다.
- //int num3 = ref;// 와 동일
- int num4 = IntTypeReturn(num1);//(O)
- //int &num4 = IntTypeReturn(num1);(X)반환형이 기본자료형으로 선언된 IntTypeReturn 함수의 반환 값은 반드시 변수에 저장해야 한다.
- //int &num4 = 2;와 동일
- const int &num5 = IntTypeReturn(num1);//(O)
- //C++ 컴파일러는 const 참조자를 이용해서 상수를 참조할때 '임시변수' 를 만든다.
- return 0;
- }
const int num = 10;
변수 num을 상수화!
const int *ptr1 = &val1;
포인터 ptr1을 이용해서 val1의 값을 변경할 수 없음
int *const ptr2 = &val2;
포인터 ptr2가 상수화 됨
const int *const ptr3 = &val3;
포인터 ptr3가 상수화, ptr3을 이용해서 val3의 밧을 변경할 수 없음.
const 참조자는 상수도 참조가 가능하다!!!
const int &ref = 50;
//잘못된 구문
const int num = 20;
int &ref = num;//ref를 통한 값의 변경이 가능해지므로 상수화된 변수를 참조자에 할당 할수 없다.
ref +=10;
//포인터의 사용예
int num = 12;
int *ptr = #//별칭 ptr추가
int **dptr = &ptr;//dptr에 ptr에 담긴 값을 할당
int *(&pref) = ptr;//별칭 pref 추가
int **(&dpref) = dptr;//dpref에 dptr에 담긴 값을 할당
힙에 할당된 변수? 이제 포인터를 사용하지 않아도 접근할 수있다.
int *ptr = new int;
int &ref = *ptr;
ref = 20;
cout<<*ptr<
*윤성우 열혈 C++프로그래밍 발췌
2012년 12월 19일 수요일
기본 자료형
자료형
자료형 | 이름 | 크기 | 표현 범위 |
정수형 | short | 2Byte | -32768 ~ 32767 |
unsigned short | 2Byte | 0 ~ 65535 | |
int | 4Byte | -2^31 ~ 2^31-1 | |
unsigned int | 4Byte | 0 ~ 2^32-1 | |
long | 4Byte | -2^31 ~ 2^31-1 | |
unsigned long | 4Byte | 0 ~ 2^32-1 | |
실수 | float | 4Byte | 3.4*10^-38 ~ 3.4*10^38 |
배정도형 실수 | double | 8Byte | 1.7*10^-308~1.7*10^308 |
문자형 | char | 1Byte | -128 ~ 127 |
unsigned char | 1Byte | 0 ~ 255 |
피드 구독하기:
글 (Atom)