Smart Pointers

Summary

Smart pointers are pointer wrappers which provide certain built-in memory safety guarantees pertaining to shared access. This is achieved by enforcing an ownership model, and through so called move semantics.

Overview

	  int main() {
	    std::unique_ptr resourceA_ptr = std::make_unique();
	    auto resourceA_ptr_moved = std::move(resourceA);
	    std::shared_ptr resourceB_ptr = std::make_shared();
	    auto resourceB_ptr_copy = resourceB
	  }
	  ```