#include <iostream>
using namespace std;
// 배열 s의 index 원소 공간에 대한 참조를 리턴하는 함수
char& find(char s[], int index) {
return s[index]; // s[index] 공간의 참조 리턴
}
int main() {
char name[] = "Mike";
cout << name << endl;
find(name, 0) = 'S'; // name[0]을 'S'로 변경
cout << name << endl;
char& ref = find(name, 2); // ref = name[2], ref값이 'k'인지 궁금
cout << ref << endl;
ref = 't';
cout << name << endl;
}
---> 참조 변수도 참조하는 공간의 원소값을 출력할 수 있네.
#include <iostream>
using namespace std;
class Circle {
int radius;
public:
Circle() { radius = 1; }
Circle(int radius) { this->radius = radius; }
void setRadius(int radius) { this->radius = radius; }
double getArea() { return 3.14 * radius * radius; }
};
void readRadius(Circle& a) {
/* Circle 타입으로 지정하면 안된다.
그럼 return값 줘야 해. 왜인지는 몰라. 암튼 void로 하니까 되네.
*/
int r;
cout << "반지름 입력 :";
cin >> r;
a.setRadius(r);
//return a;
/* 필요 없나? 어. 이미 참조한 거라서 여기서 값 바꾸면 바뀜.
나는 소멸할 때 없어질까봐 걱정했는데, 그건 아닌듯.
*/
}
int main() {
Circle donut;
readRadius(donut); // 키보드로부터 반지름 값을 읽어 Circle 객체에 반지름을 설정하는 함수 호출
cout << "donut의 면적은 " << donut.getArea() << endl;
}
/*객체 치환*/
/*
Circle readRadius() {
int r;
cout << "반지름 입력 :" << endl;
cin >> r;
Circle tmp(r);
return tmp;
}
int main() {
...
donut = readRadius();
...
}
*/