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;
}
===============================================================================================
'예전 포스팅 모음' 카테고리의 다른 글
[C++] 생성자와 소멸자 (0) | 2014.08.04 |
---|---|
[java] 객체지향 프로그래밍I 정리(클래스~초기화) (0) | 2014.08.01 |
[java] 단순 계산식 계산하기(Scanner, nextInt(), next().charAt()) (0) | 2014.08.01 |
[C++] 클래스 (0) | 2014.07.31 |
[C++] 참조자(Reference) (0) | 2014.07.30 |