Difference between revisions of "Intermediate C++ Game Programming Tutorial 21"
(Created page with "Smart pointers. I have the smartest pointers. Nobody has smart pointers like mine. == Topics Covered == * std::unique_ptr<> == Video Timestamp Index == * [https://youtu.be/9...") |
(→Bonus Video) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Smart pointers. I have the smartest pointers. | + | Smart pointers. I know pointers, I have the smartest pointers. In this video we learn about <code>std::unique_ptr<></code>, which is by far the most frequently-used and important smart pointer. <code>std::shared_ptr<></code> can go suck on an egg. |
== Topics Covered == | == Topics Covered == | ||
− | * std::unique_ptr<> | + | * <code>std::unique_ptr<></code> |
+ | * How to pass (and not to pass) smart pointers | ||
+ | * Custom deleters | ||
== Video Timestamp Index == | == Video Timestamp Index == | ||
Line 8: | Line 10: | ||
== Bonus Video == | == Bonus Video == | ||
− | + | The addition of smart pointers to Surface has allowed us to reduce the amount of code we need to write for Surface, making it simpler and correct by default. But we still need to write logic for those pesky copy operations... What if we used a container like std::vector<>! Then | |
+ | |||
+ | == Notes == | ||
+ | Although Chili uses <code>std::unique_ptr<></code> in <code>Surface</code>, which allows us to <code>= default</code> the move members and leave the destructor undeclared, the astute student will realize that <code>Surface</code> should actually be setting the <code>width</code> and <code>height</code> of the donor surface to <code>0</code> when pilfering, so we actually still need to declare move members in this case. This is done in the Bonus Video where we perfect <code>Surface</code>. | ||
== Source Code == | == Source Code == | ||
− | * [https://github.com/planetchili/Memefighter | + | * [https://github.com/planetchili/Inheritance Inheritance (Memefighter) Github Repository]<br /> |
* [https://github.com/planetchili/Sprite Sprite Github Repository (for <code>Surface</code> code)]<br /> | * [https://github.com/planetchili/Sprite Sprite Github Repository (for <code>Surface</code> code)]<br /> | ||
+ | |||
== See also == | == See also == | ||
* [[Intermediate C++ Game Programming Tutorial 22|Next in series (Tutorial 22)]] | * [[Intermediate C++ Game Programming Tutorial 22|Next in series (Tutorial 22)]] | ||
* [[Intermediate C++ Game Programming Series]] | * [[Intermediate C++ Game Programming Series]] |
Revision as of 12:43, 13 January 2018
Smart pointers. I know pointers, I have the smartest pointers. In this video we learn about std::unique_ptr<>
, which is by far the most frequently-used and important smart pointer. std::shared_ptr<>
can go suck on an egg.
Topics Covered
-
std::unique_ptr<>
- How to pass (and not to pass) smart pointers
- Custom deleters
Video Timestamp Index
Bonus Video
The addition of smart pointers to Surface has allowed us to reduce the amount of code we need to write for Surface, making it simpler and correct by default. But we still need to write logic for those pesky copy operations... What if we used a container like std::vector<>! Then
Notes
Although Chili uses std::unique_ptr<>
in Surface
, which allows us to = default
the move members and leave the destructor undeclared, the astute student will realize that Surface
should actually be setting the width
and height
of the donor surface to 0
when pilfering, so we actually still need to declare move members in this case. This is done in the Bonus Video where we perfect Surface
.
Source Code