스마트포인터
Posts
2 posts[C++] Data Save
C/C++을 배우면 후반부에 파일 입출력에 대해 배우게 된다. 간단한 입출력 실습도 하는데 그런다고 문자열 데이터 말고는 데이터를 넣어본 적이 거의 없을 것이다. 구분자는 거의 다 줄바꿈이고. 이번 글에서 다룰 파일 입출력 방식은 C++11의 std::fstream을 사용하지만 개념 자체는 어떤 방식이든 무관하게 사용이 가능하다. 우선 예전 기억을 돌이켜보자. 우리는 어떻게 파일 입출력을 하였는가? bool Save() { int save_int = 5; float save_float = 3.123f; std::string save_string = "hello, world!"s; std::fstream fs; fs.
[C++] 생성자가 보호된 객체로 스마트 포인터 만들기
몇몇 드문 경우(싱글톤 등) class의 생성자가 public이 아닐 경우가 있다. 이 객체를 unique_ptr 또는 shared_ptr로 만들 필요가 있을 때도 존재할 것이다. 이 때 몇 가지 방법이 있다. 걍 팩토리 함수를 friend로 걸고 스마트 포인터 팩토리(make_~~) 함수를 쓰지 않고 때려박아 만든다. ex) auto instance = std::unique_ptr { new MyCalss{} }; 이 경우 생각하지 않고 때려박기 때문에 좋다. 사실 스마트 포인터 팩토리 함수를 쓸 필요따윈 없다. 스마트 포인터 팩토리 함수를 friend에 등록한다. ex) class MyClass { //... template


