C++

포인터

Jagbbum 2023. 9. 20. 01:55

모든 변수는 메모리에 값을 저장한다. 이러한 변수들은 각각 메모리의 주소값을 가진다.

각각의 변수의 접근하는 것은 이 변수의 주소에 접근하는 것이다.

이 때 변수의 이름이 아닌 주소로 접근하는 것이 포인터이다.

 

포인터를 사용하면 전역변수를 쓰지 않고 다른 영역의 변수에 접근할 수 있다.

Cirlce circle:
double d = circle.getArea()

int *p;
p = &circle;
d = p->getArea() // d=(*p).getArea와 같다

& 연산자 : &로 포인터에 객체 주소를 저장

* 연산자: 객체에 대한 포인터 선언

-> 연산자: 객체 포인터로 멤버를 접근

 

스마트 포인터

shared_ptr

shared_ptr는 유니크 포인터와 달리 복사 생성자를 가져 하나의 객체를 여러 포인터가 가리킬 수 있게 한다.

auto 변수명 = std::make_shared<자료형>(입력값);

위와 같은 방법으로 객체를 생성할 수 있다.

 

 

unique_ptr

unique_ptr는 하나의 객체를 하나의 스마트 포인터만 가리킬 수 있게 한다.

std::unique_ptr<자료형> 변수명(new 자료형);
auto 변수명 = std::make_unique<자료형>(입력값);

위와 같은 방법으로 객체를 생성할 수 있다.

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

연관 컨테이너와 비순차 연관 컨테이너  (0) 2023.09.23
컨테이너 어댑터와 비트셋 컨테이너  (0) 2023.09.23
순차 컨테이너  (0) 2023.09.22
람다  (0) 2023.09.21
스코프  (0) 2023.09.21