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<자료형>(입력값);
위와 같은 방법으로 객체를 생성할 수 있다.