私はRule of Zeroについて読んでいます。ゼロの混乱のルール?
簡体字:このルールの目的はわかりません。 3と5のルールは、「経験則」のようなものですが、このルールでは「経験則」や他の具体的な意図を見ることはできません。
詳細バージョン:
引用私にしてみましょう:カスタムデストラクタ、コピー/移動コンストラクタや コピー/移動代入演算子は、所有権を独占的に対処すべきを持って
クラス。 他のクラスでは、カスタムデストラクタ、コピー/移動 コンストラクタ、またはコピー/移動代入演算子は使用できません。
これはどういう意味ですか?彼らは何を意味するのですかオーナー、何の所有権ですか? 彼らはまた、サンプルコード(私はそれが導入に接続されていると思います)を示しています
class rule_of_zero
{
std::string cppstring;
public:
rule_of_zero(const std::string& arg) : cppstring(arg) {}
};
彼らがこれを表示するために何をしたいかを、私は本当にこの1に失われています。
また、ポリモーフィッククラスを扱っており、デストラクタがpublicおよびvirtualとして宣言され、このブロックが暗黙的に移動するというシナリオについても説明しています。そのため、あなたに不履行それらすべてを宣言する必要があります。
class base_of_five_defaults
{
public:
base_of_five_defaults(const base_of_five_defaults&) = default;
base_of_five_defaults(base_of_five_defaults&&) = default;
base_of_five_defaults& operator=(const base_of_five_defaults&) = default;
base_of_five_defaults& operator=(base_of_five_defaults&&) = default;
virtual ~base_of_five_defaults() = default;
};
これはあなたが公共および仮想の両方で宣言されたデストラクタを持つ基底クラスを持っている時はいつでも、あなたが本当にすべての他の特別なメンバ関数を宣言しなければならないことを意味していますデフォルトでは?もしそうなら、なぜ私は見ません。
私はこれが1つの場所で多くの混乱であることを知っています。
所有権==管理対象リソースのライフサイクルの責任。たとえば、様々なスマートポインタクラスは、さまざまな種類の所有権をモデル化しています(共有対ユニークなど)。 –
"経験則"は、ベストプラクティスのために一般的に遵守すべきルールです。実際には、「経験則」と呼ばれるルールはありません。 – Carcigenicate
@OliverCharlesworth、ありがとう。しかし、それは私の混乱のほんの一部でした:( –