#include <iostream>
using namespace std;
double cube(double a);
double refcube(double &ra); //참조로 매개변수를 넘김
int main()
{
double x = 3.0;
cout << cube(x);
cout << " = " << x << "의 세제곱\n";
cout << refcube(x);
cout << " = " << x << "의 세제곱\n";
return 0;
}
double cube(double a){
a *= a * a;
return a;
}
double refcube(double &ra){
ra *= ra * ra;
return ra; // 실제 변수 x를 ra가 참조했기때문에 같이 변하여 리턴된다.
}
/* 참조 전달인자는 대체변수가 정확해야한다
double side = 3.0;
double *pd = &side;
double &rd = side;
Long edge = 5L;
double lens[4] = {2.0, 5.0, 10.0, 12.0};
double c1 = refcube(side); // ra는 side
double c2 = refcube(Lens[2]); // ra는 Lens[2]
double c3 = refcube(rd); // ra는 rd이며 side
double c4 = refcube(*pd); // ra는 *pd이며 side
double c5 = refcube(edge); // ra는 임시변수가 되므로 오류. double이 Long을 참조할수 없다
double c6 = refcube(7.0); // ra는 임시변수가 된다. 데이타형식이 변수가 아니여서... 안됨
double c7 = refcube(side + 10.0) //ra는 임시변수가 된다. 같은 이유.. 안됨
C++ 초창기에는 임시변수를 생성하여 오류처리로 하지 않았지만, 지금은...
전달인지로 전달되는 실제변수의 변경이 목적인 참조 전달인자가 제기능을 하지 않으므로 허용안함.
*/
'I.T > Programming' 카테고리의 다른 글
unexpected end of file while looking for precompiled header directive : compile error (0) | 2011.04.21 |
---|---|
함수오버로딩, 디폴트인자, 함수템플릿 (0) | 2011.04.08 |
함수를 가리키는 포인터변수 (0) | 2011.04.08 |
const (0) | 2011.04.08 |
new 와 delete 함수 (0) | 2011.04.08 |