Pytania otagowane jako explicit

2
Dlaczego #include <string> zapobiega tutaj błędowi przepełnienia stosu?
Oto mój przykładowy kod: #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() { …

1
Czy operator rzutowania może być jawny?
Jeśli chodzi o konstruktory, dodanie słowa kluczowego explicituniemożliwia entuzjastycznemu kompilatorowi utworzenie obiektu, gdy nie było to pierwszym zamiarem programisty. Czy taki mechanizm jest dostępny również dla operatorów odlewów? struct Foo { operator std::string() const; }; Tutaj, na przykład, chciałbym móc rzucać Foow a std::string, ale nie chcę, aby takie rzucanie …

3
jaki jest przypadek użycia jawnego (bool)
C ++ 20 wprowadził jawne (bool), które warunkowo wybiera w czasie kompilacji, czy konstruktor jest jawny, czy nie. Poniżej znajduje się przykład, który znalazłem tutaj . 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; …
24 c++  c++20  explicit 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.