可以借助解引用操作变通地对 std::unique_ptr 进行深拷贝
まだ誰も着手していません。
評価
- 難易度
- 1/5
- 見積もり時間
- 1時間未満
- 初心者へのやさしさ
- 45/100
- issue の種類
- ドキュメント
- 明瞭さ
- 明確に書かれている
- 活発さ
- 停滞
- 技術スタック
- cpp
調査の方向性
Open 02/19/main.cpp at lines 32-35 and compare the current unique_ptr example with the proposed make_unique dereference approach. Update the course example to show the safer deep-copy form, then verify that the surrounding example still reads correctly and handles the intended pointer state.
索引モデルが issue の本文から書いたものです。
説明
课件这里的写法是复杂又容易出错的,其实我们可以采取下面这样更安全的方式:
//C* raw_p = p.get(); // no need
func(std::make_unique<C>(*p)); // deep copy
p->do_something(); // OK, run normally
虽然 std::unique_ptr 删除了 copy constructor 和 copy assignment operator ,但其实我们可以借助解引用操作变通地对 std::unique_ptr 进行拷贝。
deep copy 示例如下:
std::unique_ptr<std::string> up1(std::make_unique<std::string>("Good morning"));
// copy construct!
std::unique_ptr<std::string> up2(std::make_unique<std::string>(*up1));
// safe copy construct!
std::unique_ptr<std::string> up3(up1 ? std::make_unique<std::string>(*up1) : nullptr);
// copy assignment!
up2 = std::make_unique<std::string>(*up1);
// safe copy assignment!
up3 = up1 ? std::make_unique<std::string>(*up1) : nullptr;
其它的例证:
- Google tensorflow : unique_ptr - in copy assignment operator
- Microsoft terminal : unique_ptr - in copy constructor
- 《Effective Modern C++》,Item22,其中的 class Widget 的 copy constructor 和 copy assignment operator 的实现,见 EffectiveModernCppChinese/item22.md · GitHub
- 主要言語
- C++
- スター
- 4.2k
- フォーク
- 555
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
parallel101/course のほかの issue
-
访问者设计模式缺少继承オープン
難易度 1/5 1〜3時間 初心者へのやさしさ 68/100
parallel101/course#35 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 62/100
parallel101/course#29 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 45/100
parallel101/course#39 ·
-
C++17之后才保证new一定对齐。オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 42/100
parallel101/course#38 ·
-
函数返回匿名结构体无法编译オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 45/100
parallel101/course#36 · コメント 2 件 ·
parallel101/course の issue をすべて見る
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
EsotericSoftware/spine-runtimes#3186 ·
-
Round video messages start gray and blocky with libx264: encoder is configured for 1,000,000 fpsオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
telegramdesktop/tdesktop#31422 ·
メンテナーはふだん 9 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 5 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
zen-browser/desktop#15809 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信