5-1

BakJeonghyun·2022년 9월 26일
0

전공C++

목록 보기
9/20

예제 5-8

#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;
}

---> 참조 변수도 참조하는 공간의 원소값을 출력할 수 있네.


예제 5-7

#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(); 
    ...
}
*/

profile
I just got started a blog.

0개의 댓글