반응형

#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++ 초창기에는 임시변수를 생성하여 오류처리로 하지 않았지만, 지금은...
전달인지로 전달되는 실제변수의 변경이 목적인 참조 전달인자가 제기능을 하지 않으므로 허용안함.
*/

반응형
Posted by Rainfly
l