タグ付けされた質問 「explicit」

2
#include <string>がスタックオーバーフローエラーを防ぐのはなぜですか?
これは私のサンプルコードです: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class MyClass { string figName; public: MyClass(const string&amp; s) { figName = s; } const string&amp; getName() const { return figName; } }; ostream&amp; operator&lt;&lt;(ostream&amp; ausgabe, const MyClass&amp; f) { ausgabe &lt;&lt; f.getName(); return ausgabe; } int main() { MyClass f1("Hello"); cout …

1
キャスト演算子を明示的にすることはできますか?
コンストラクターに関して言えば、キーワードexplicitを追加すると、プログラマーの最初の意図ではないときに熱心なコンパイラーがオブジェクトを作成するのを防ぐことができます。そのようなメカニズムは鋳造オペレーターにも利用できますか? struct Foo { operator std::string() const; }; ここでは、例えば、私はキャストできるようにしたいと思いFooの中にstd::string、私は、このようなキャストは暗黙のうちに起こることを望んでいません。

3
明示的な(ブール)のユースケースは何ですか
C ++ 20 は、コンストラクターが明示的にされているかどうかをコンパイル時に条件付きで選択する明示的な(ブール値)を導入しました。 以下は私がここで見つけた例です。 struct foo { // Specify non-integral types (strings, floats, etc.) require explicit construction. template &lt;typename T&gt; explicit(!std::is_integral_v&lt;T&gt;) foo(T) {} }; foo a = 123; // OK foo b = "123"; // ERROR: explicit constructor is not a candidate (explicit specifier evaluates to true) foo c …
24 c++  c++20  explicit 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.