[C++] std::shared_ptrのサンプル

naohiro19
記事: 256
登録日時: 13年前
住所: 愛知県

[C++] std::shared_ptrのサンプル

投稿記事 by naohiro19 » 6年前

えぴ流 C++ 実装スタイル プロ生勉強会 第10回@品川 #pronamaよりプログラムをそのまま移しました。

CODE:

#include 
#include 
#include 
#include 
#include 
using namespace std;

class pet {
	string name_;
protected:
	string name() const { return name_; }
	virtual void do_make_sound() const = 0;
public:
	pet(const char* name) : name_(name) {}
	virtual ~pet() { cout > pets;

	vector> cats;
	cats.push_back(make_shared("タマ"));
	cats.push_back(make_shared("ミケ"));
	cats.push_back(make_shared("Kitty"));
	for_each(cats.begin(), cats.end(), [](shared_ptr pet) {pet->make_sound(); });
	{
		vector> dogs;
		dogs.push_back(make_shared("ポチ"));
		dogs.push_back(make_shared("コロ"));
		dogs.push_back(make_shared("Lassie"));
		for_each(dogs.begin(), dogs.end(), [](shared_ptr pet) {pet->make_sound(); });

		pets.push_back(cats[0]);
		pets.push_back(dogs[0]);
		pets.push_back(cats[1]);
		pets.push_back(dogs[1]);

	}
	
	for_each(pets.begin(), pets.end(), [](shared_ptr pet) { pet->make_sound(); });
	cout << "That's it." << endl;
}
実行結果は以下のとおりです。

CODE:

タマ: にゃんにゃんおー
ミケ: にゃんにゃんおー
Kitty: にゃんにゃんおー
ポチ: わんわんおー
コロ: わんわんおー
Lassie: わんわんおー
Lassie dctor.
タマ: にゃんにゃんおー
ポチ: わんわんおー
ミケ: にゃんにゃんおー
コロ: わんわんおー
That's it.
Kitty dctor.
タマ dctor.
ポチ dctor.
ミケ dctor.
コロ dctor.
ideone.com上の実行でも同じ結果になりました。

コメントはまだありません。