[C++] new&delete / 구조체

C++

 

new&delete

 

(복습)

*포인터연산자(->)

*struct 정의 : struct 태그명 {항목...} 식별자

*구조체의 요소에 접근할 때에는 '.'을 이용하여 구조체의 '변수명.요소명'과 같은 형식을 사용한다.

*ex)

Point * pnt = new Point;

(*pnt).xpos = 10;

 - pnt.xpos라고 하지 않고 (*pnt).xpos라고 사용한 이유는 '*'연산자보다 '.'연산자의 우선순위가 높기 때문에 ()를 생략하면 전혀 다른 의미로 해석되어 컴파일시에 오류가 발생한다.

 - 위와 같은 표현식을 줄인 약식 표현법으로는 '->'이 제공된다.

 

===============================================================================================

[열혈/문제02-3]

 

#include <iostream>

#include <string.h>

#include <stdlib.h>

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 * pnt1 = new Point;

    pnt1->xpos = 5;  //->포인터 연산자 

    pnt1->ypos = 25;

    

    Point * pnt2 = new Point;

    (*pnt2).xpos = 2008;

    pnt2->ypos = 2014;

    

    Point &pnt = PntAdder(*pnt1,*pnt2);

    

    cout<<"xpos: "<<pnt.xpos<<" ypos: "<<pnt.ypos<<endl;

    

    delete pnt1;

    delete pnt2;

    delete &pnt;

    

    system("pause");

    return 0;            

}

===============================================================================================