C++ 3.객체 포인터와 객체 배열
title: “C++ 3.객체 포인터와 객체 배열” categories:
-
CspecialCharspecialChar
#C++ 3.객체 포인터와 객체 배열 : 네이버 블로그
C와 마찬가지로 C++도 포인터를 사용 할 수 있다
C++은 클래스를 포인터를 이용해 지정할 수 있습니다
즉 객체 포인터를 사용 할 수 있습니다
#include "pch.h"
#include
using namespace std;
class circle {
public:
int radius;
circle();
circle(int r);
double getarea();
};
circle::circle() {
radius = 1;
}
circle::circle(int r) {
radius = r;
}
double circle::getarea() {
return radius \* radius\*3.14;
}
int main() {
circle a;
circle \*p;
p = &a
cout << p->getarea()<<endl;
cout << (\*p).getarea() << endl;
}
위 클래스 선언은 전 포스팅과 같으니 넘어가고 다른 내용이 있는 main 안의 코드만 설명하겠다
circle a; //클래스 circle 객체 a생성
circle *p// 객체 포인터 생성
p=&a; 객체 a의 주소를 포인터에 초기화
cout « p->getarea()«endl; //포인터 p의 getarea() 함수 실행
cout « (*p).getarea() « endl; //포인터 p의 getarea() 함수 실행
포인터에서 맴버에 접근하는 방법으로는 p->연산자와 (*p).연산자가 있다
배열 또한 주소이므로 포인터와 같은 방식으로 객체 배열을 사용할 수 있다
#include "pch.h"
#include
using namespace std;
class circle {
public:
int radius;
circle();
circle(int r);
double getarea();
};
circle::circle() {
radius = 1;
}
circle::circle(int r) {
radius = r;
}
double circle::getarea() {
return radius \* radius\*3.14;
}
int main() {
circle a[3];
a[0].radius = 10;
a[1].radius = 20;
a[2].radius = 30;
circle \*p;
p = a;
for (int i = 0; i < 3; i++)
{
cout << p->getarea() << endl;
p++;
}
}
위 코드 또한 main 안의 코드만 다르므로 main 내의 코드만 설명하겠다
circle a[3]; //circle 클래스의 a[3]객체 생성
a[0].radius = 10; //a[0]의 radius 객체 맴버 접근
a[1].radius = 20; //a[1]의 radius 객체 맴버 접근
a[2].radius = 30; //a[2]의 radius 객체 맴버 접근
circle *p; //circle 클래스 포인터 p 선언
p = a; //배열 자체가 주소므로 주소를 p에 초기화
for (int i = 0; i < 3; i++)
{
cout « p->getarea() « endl; //p내의 맴버 getarea()함수 접근
p++; //배열의 다음 원소로 넘어감
}
객체 포인터를 사용해 객체 배열을 이용하는 방법에는 다양하게 있다
for (int i = 0; i < 3; i++)
{
cout « p->getarea() « endl;
p++;
}
이건 위 코드에 있는 포인터 주소를 증가시켜 접근하는 방법이다
for (int i = 0; i < 3; i++)
{
cout « (*p++).getarea() « endl;
}
객체 포인터와 같이 (*p). 연산자를 사용할 수 있고
for (int i = 0; i < 3; i++)
{
cout « (p+i)->getarea() « endl;
}
포인터 p의 정수 연산을 사용할 수 있다
객체 배열을 초기화시키는 방법으로는
circle a[3]={circle(),circle(10),circle(20)}같이 생성자를 이용해 초기화 할 수 있다
물론 객체 배열도 일반 배열처럼 다차원으로 만들 수 있다
circle a[2][5]처럼
이렇게 객체 포인터와 객체 배열에 알아보았다