🐽Smarter Pointers
Last updated
Was this helpful?
Was this helpful?
#include <memory>
void consume(std::unique_ptr<int> p) {
// owns the pointer
}
int main() {
auto x = std::make_unique<int>(50);
consume(std::move(x)); // transfer ownership
}#include <iostream>
#include <memory>
int main() {
auto p1 = std::make_shared<int>(10);
auto p2 = p1; // shared ownership
std::cout << *p1 << std::endl; // 10
std::cout << *p2 << std::endl; // 10
}#include <iostream>
#include <memory>
int main() {
auto p1 = std::make_shared<int>(10);
std::cout << p1.use_count() << std::endl; // 1
auto p2 = p1;
std::cout << p1.use_count() << std::endl; // 2
}#include <iostream>
#include <memory>
std::unique_ptr<int> spawnScoreBonus() {
return std::make_unique<int>(100);
}
std::unique_ptr<int> generatePlayerHealth() {
return std::make_unique<int>(50);
}
int main() {
std::unique_ptr<int> score = spawnScoreBonus();
std::cout << "Player gained score: " << *score << std::endl;
std::unique_ptr<int> health = generatePlayerHealth();
std::cout << "Player health: " << *health << std::endl;
std::shared_ptr<int> enemyHp = std::make_shared<int>(200);
std::shared_ptr<int> archerTarget = enemyHp;
std::shared_ptr<int> knightTarget = enemyHp;
return 0;
}