/*
구조체에 대한 복습을 겸할 수 있는 문제를 제시하겠다.
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++ 프로그래밍 윤성우 저
'C++ > 열혈 C++ 프로그래밍(윤성우 저)' 카테고리의 다른 글
열혈 C++ 프로그래밍 3-1 문제 (0) | 2017.05.29 |
---|---|
열혈 C++ 프로그래밍 2-4 문제 (0) | 2017.05.28 |
열혈 C++ 프로그래밍 2-2 문제 (0) | 2017.05.28 |
열혈 C++ 프로그래밍 2-1 문제 (2) | 2017.05.28 |
OOP 단계별 프로젝트 1 (0) | 2017.05.28 |