C++/열혈 C++ 프로그래밍(윤성우 저)

열혈 C++ 프로그래밍 2-3 문제

꾸준함. 2017. 5. 28. 22:24

/*

구조체에 대한 복습을 겸할 있는 문제를 제시하겠다.

2차원 평면상에서의 좌표를 표현할 있는 구조체를 다음과 같이 정의하였다

typedef struct __Point

{

        int xpos;

        int ypos;

}Point;

위의 구조체를 기반으로 점의 합을 계산하는 함수를 다음의 형태로 정의하고(덧셈결과는 함수의 반환을 통해서 얻게 한다).

Point& PntAdder(const Point &p1, const Point &p2);

임의의 두점을 선언하여, 함수를 이용한 덧셈연산을 진행하는 main 함수를 정의해보자

참고로 문제의 해결을 위해서는 다음 질문에 답을 있어야 한다

1.동적할당 변수를 함수의 참조형 매개변수의 인자로 어떻게 전달해야 하는가?

2.함수 내에 선언된 변수를 참조형으로 반환하려면 해당 변수는 어떻게 선언해야 하는가?

*/

#include <iostream>

using namespace std;

 

typedef struct __Point

{

        int xpos;

        int ypos;

}Point;

 

Point& PntAdder(const Point &p1, const Point &p2)

{

        Point *result=new Point; //함수 내에 선언된 변수를 참조형으로 반환하려면 해당 변수는 어떻게 선언해야 하는가?

        result->xpos = p1.xpos + p2.xpos;

        result->ypos = p1.ypos + p2.ypos;

        return *result;

}

 

int main(void)

{

        Point *ptr1 = new Point;

        cout << "ptr1 xpos ypos 입력:";

        cin >> ptr1->xpos >> ptr1->ypos;

 

        Point *ptr2 = new Point;

        cout << "ptr2 xpos ypos 입력:";

        cin >> ptr2->xpos >> ptr2->ypos;

 

        Point &result=PntAdder(*ptr1, *ptr2);//1.동적할당 변수를 함수의 참조형 매개변수의 인자로 어떻게 전달해야 하는가 ?

        cout << "결과의 xpos:" << result.xpos << "결과의 ypos:" << result.ypos << endl;

       

        delete ptr1;

        delete ptr2;

        delete &result; //함수에서 new 선언했으므로 delete 해줘야한다

        return 0;

}


개발 환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


[참고] 열혈 C++ 프로그래밍 윤성우 저

반응형