คำถามติดแท็ก 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เป็น a std::stringได้ แต่ฉันไม่ต้องการให้นักแสดงดังกล่าวเกิดขึ้นโดยปริยาย

3
usecase คืออะไรสำหรับชัดแจ้ง (บูล)
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 …
24 c++  c++20  explicit 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.