私は1つのパブリック静的メソッドといくつかのプライベートメソッドをC++で持つクラスを書いています。この場合、コピーと代入演算子を明示的に削除する(下記のコードを参照)ことは意味がありますか?C++の純粋に静的なパブリックインターフェイスでコピー/代入演算子を削除する意味がありますか?
public:
static MyReturnType* CreateSomeMock(const myType input);
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
private:
static ...
私はコピーまたは無インスタンス変数とクラス構築デフォルトに割り当てるしようとしている誰かを心配べきではないと言うに傾いています。私はちょうど100%ではなく、コミュニティーがベストプラクティスと考えるものが不思議です。
UPDATE 1
私は、.cppファイルで定義された非メンバ関数であることをプライベートメソッドを移動しました。ヘッダーには依然としてパブリックメンバー関数CreateSomeMock
が含まれていますが、私はまだ割り当て/ copy-construction =について不思議です。
UPDATE 2
この "クラス" は、本質的に名前空間です。私はこの点についてのすべての答えに感謝し、この場合の質問の= delete
の部分についてこれを保持したいと思います(この時点では私は本当に避けなければならないと同意します...しかし、時々起こる)。
私はそれがクラスであることが理にかなっているかどうかを尋ねるでしょう。 – juanchopanza
引数はありませんが、それは実際にはもっと機能です。具体的には、ファクトリクラスです。 – PerryC
私はこれがクラスである理由を見ることができませんが、あなたが本当に1つを望むなら、コンストラクタを無効にすることができます。作成できない場合は、コピーすることはできません。 – Dutow