구조체에 대한 new & delete 연산
문제1
#include <iostream>
using namespace std;
typedef struct __Point
{
int xpos;
int ypos;
} Point;
Point& PntAdder(const Point& p1, const Point& p2)
{
Point *tmp = new Point;
tmp->xpos = p1.xpos + p2.xpos;
tmp->ypos = p1.ypos + p2.ypos;
return *tmp;
}
int main(void)
{
Point* p1 = new Point; // Point 자료형을 가리키는 포인터 p1
Point* p2 = new Point; // Point 자료형을 가리키는 포인터 p2
p1->xpos = 1;
p1->ypos = 2;
p2->xpos = 3;
p2->ypos = 4;
Point& p3 = PntAdder(*p1, *p2);
cout << p3.xpos << " " << p3.ypos << endl;
return 0;
}
<추가 설명>
구조체 Struc에 대하여,
일반적으로는 Struc tmp = { 10 }; 처럼 생성하고 Struc.data; 로 접근합니다.
하지만 Struc* tmp = new Struc{ 10 }; 처럼 동적할당하여 포인터를 만들었다면 (*tmp).data 또는 tmp->data 로 접근합니다.
즉, 구조체 포인터 '->'를 사용하는 경우는 포인터를 이용해 구조체를 생성했을 때에만 사용할 수 있습니다.
728x90
반응형
'etc. > 열혈 C++ 프로그래밍' 카테고리의 다른 글
(열혈 C++ 프로그래밍) 문제 03-1 (0) | 2021.11.11 |
---|---|
(열혈 C++ 프로그래밍) 문제 02-4 (0) | 2021.11.11 |
(열혈 C++ 프로그래밍) 문제 02-2 (0) | 2021.11.11 |
(열혈 C++ 프로그래밍) 문제 02-1 (0) | 2021.11.11 |
(열혈 C++ 프로그래밍) OOP 단계별 프로젝트 01단계 (0) | 2021.11.11 |