Programming/C++

[C++] 객체 포인터

Jubil 2018. 1. 22. 17:30
반응형

<객체 포인터>


동일 클래스의 객체 주소를 저장합니다.


객체 포인터의 멤버 참조 연산자는 -> 입니다. (구조체와 동일)



클래스이름 객체;

클래스이름 *객체포인터;

객체포인터 = &객체;

객체포인터 -> 멤버;


이렇게 생성할 수도 있고, (정적 객체)



객체포인터 = new 클래스이름;

객체포인터 -> 멤버;


delete(객체포인터);


new 키워드를 사용해서 객체를 만들고 반환된 주소를 포인터 객체에 저장하는 방법도 있습니다. (동적 객체)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
using namespace std;
 
class CopyObj
{
public:
    CopyObj(const double h, const double w);
    ~CopyObj();
    void showVar();
    
private:
    double height;
    double weight;
};
 
CopyObj::CopyObj(const double h, const double w) {
    height = h;
    weight = w;
}
 
CopyObj::~CopyObj() {
    cout << "***** 객체 소멸 *****" << endl;
}
 
void CopyObj::showVar() {
    cout << "키        : " << height << endl;
    cout << "몸무게    : " << weight << endl;
}
 
 
int main(){
    CopyObj p1(181.579.3); //객체 생성
    p1.showVar();
 
    cout << "************************" << endl;
 
    CopyObj *p2;
    p2 = &p1;
    p2 -> showVar();
 
    return 0;
}
cs


보시면 객체를 만든 뒤 객체 포인터를 만들고, 객체의 주소를 객체 포인터에 저장했습니다.


그리고 객체 포인터를 이용해서 showVar() 함수를 호출했습니다.





객체 포인터는 객체를 가리키는 포인터이기 때문에 소멸자는 p1 객체가 소멸될 때 한 번 호출됩니다. p2는 객체가 아니기 때문에 소멸되지 않습니다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;
 
class CopyObj
{
public:
    CopyObj(const double h, const double w);
    ~CopyObj();
    void showVar();
    
private:
    double height;
    double weight;
};
 
CopyObj::CopyObj(const double h, const double w) {
    height = h;
    weight = w;
}
 
CopyObj::~CopyObj() {
    cout << "***** 객체 소멸 *****" << endl;
}
 
void CopyObj::showVar() {
    cout << "키        : " << height << endl;
    cout << "몸무게    : " << weight << endl;
}
 
 
int main(){
    CopyObj *p1 = new CopyObj(189.880.2);
    p1->showVar();
 
    delete(p1);
 
    return 0;
}
cs


동적 객체를 만들고 그걸 p1 객체 포인터가 가리키고 있습니다.




함수가 잘 호출된 것을 확인할 수 있고, delete를 할 때 객체가 소멸되는 것을 확인할 수 있습니다.

반응형

'Programming > C++' 카테고리의 다른 글

[C++] string 클래스  (0) 2018.01.22
[C++] this  (0) 2018.01.22
[C++] 소멸자  (0) 2018.01.22
[C++] 생성자  (0) 2018.01.22
[C++] 클래스와 객체  (2) 2018.01.22