Minwoo Dev.
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch02-3 : 구조체에 대한 new & delete 연산 문제풀이 본문
728x90
반응형
SMALL
문제
구조체에 대한 복습을 겸할 수 있는 문제를 제시하겠다.
2차원 평면상에서의 좌표를 표현할 수 있는 구조체를 다음과 같이 정의하였다.
typedef struct __Point
{
int xpos;
int ypos;
} Point;
위의 구조체를 기반으로 두 점의 합을 계산하는 함수를 다음의 형태로 정의하고(덧셈결과는 함수와 반환을 통해서 얻게 한다.)
Point& PntAdder(const Point &p1, const Point &p2);
임의의 두 점을 선언하여, 위 함수를 이용한 덧셈연산을 진행하는 main 함수를 정의해보자. 단, 구조체 Point 관련 변수의 선언은 무조건 new 연산자를 이용하여 진행하여야 하며, 할당된 메모리 공간의 소멸도 철저해야 한다.
참고로 이 문제의 해결을 위해서는 다음 두 질문에 답을 할 수 있어야 한다.
- 동적할당 한 변수를 함수의 참조형 매개변수의 인자로 어떻게 전달해야 하는가 ?
- 함수 내에 선언된 변수를 참조형으로 반환하려면 해당 변수는 어떻게 선언해야 하는가 ?
정답
#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 *p1 = new Point;
Point *p2 = new Point;
p1->xpos = 1, p1->ypos = 5;
p2->xpos = 3, p2->ypos = 2;
Point &result = PntAdder(*p1, *p2);
cout << "x: " << result.xpos << " y: " << result.ypos << endl;
return 0;
}
결과
728x90
반응형
LIST
'C++' 카테고리의 다른 글
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch03-1 : 구조체 내에 함수 정의하기 문제풀이 (0) | 2024.03.05 |
---|---|
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch02-4 : C++의 표준함수 호출 문제풀이 (0) | 2024.03.04 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch02 - 2 : const 포인터와 const 참조자 문제풀이 (0) | 2024.03.04 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch02-1 : 참조자 기반의 Call-by-reference 구현 (0) | 2024.03.04 |
[C++] 윤성우의 열혈 C++ 프로그래밍 Ch01-6 : 은행계좌 관리 프로그램 (0) | 2024.03.03 |