#include<iostream>
using namespace std;
////////////////////////////////////////////////////////////////////////////
//주제 5. 참조 변수 이야기
//1. 개념 : 기존 메모리의 별명
//2.
////////////////////////////////////////////////////////////////////////////
int main(){
int n=10; //메모리 할당
int *p = &n;
int &r = n;
r = 20;
cout << n << endl;
//int &r2; // error 반드시 초기값이 필요하다.
int *& pr = p; //포린터의 별명 오~케이
//int &* rp = &r; //error 별명의 주소 번지 에러에러
int (&f)() = main; //함수의 별명
int & r3 = 10; //에러 참조변수를 강제로 지정해줄수는 없다.
const int & r4=10; // 상수는 상수에 넣을수 있다.
//int && r5 = 10;// 상수를 참조하는 문법 C++ 2.0에 등장
}
==========================================================================================
#include<iostream>
using namespace std;
///////////////////////////////////////////////////////////////////////////////////////////
//참조변수와 함수 인자 이야기
//1. 어떤 함수가 인자의 값을 변경한다면 포인터나 참조 모두 좋지만 포인터가 가독성 측면에서는 좋다.
//2. 어떤 함수가 인자의 값을 변경하지 않는다면
//(A) built in type : call by value 가 더 좋다. foo(int) //
//(B) User Define Type : call by reference 가 좋다. foo(const Data&)
//
//
//////////////////////////////////////////////////////////////////////////////////////////
/*
//어떤 코드가 더좋을까?
void foo(int a){} //1
void foo(const int &a){} //2
*/
/*
void inc1(int n){++n;}
void inc2(int *p){++(*p);}
void inc3(int &r){++r;}
int main(){
int a = 1, b=1, c=1;
inc1(a); //실패 - call by value
inc2(&b); // 성공 - call by point
inc3(c); //성공 call by reference
cout << a << endl;
cout << b << endl;
cout << c << endl;
}*/
struct Data{
int data;
};
void foo(const Data & x) // call by value 는 인자값을 변경하지 않을것이라는 약속이다.
{ //하지만 메모리 사용량이 2배가 된다.
//되도록이면 const & 를 사용하자!
x=10;
}
int main(){
Data a = 0;
int a =10;
foo(a); //이 함수는 절대 a 의 값을 변경하면 안된다.
cout << a<<endl; // a= 0이 나와야 한다.
}
'C,C++ > Android_FrameWork' 카테고리의 다른 글
[SSM 안드로이드 프레임워크 개발 강의]7. 생성자 이야기 (0) | 2012.08.13 |
---|---|
[SSM 안드로이드 프레임워크 개발 강의]6. 객체 지향의 탄생 배경을 STACK 소스로 알아보기 (0) | 2012.08.13 |
[SSM 안드로이드 프레임워크 개발 강의 ] 4. C++ 캐스팅 (0) | 2012.08.13 |
[SSM 안드로이드 프레임워크 개발 강의 ] 3. 메크로와 템플릿?! (0) | 2012.08.13 |
[ SSM 안드로이드 프레임워크 개발 강의 ] 2. 인라인 함수 (0) | 2012.08.13 |