คำถามติดแท็ก c++

C ++ เป็นภาษาโปรแกรมทั่วไป เดิมได้รับการออกแบบให้เป็นส่วนขยายของ C และมีไวยากรณ์ที่คล้ายกัน แต่ตอนนี้มันเป็นภาษาที่แตกต่างอย่างสิ้นเชิง ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัส (จะ) คอมไพล์ด้วยคอมไพเลอร์ C ++ ใช้แท็กเฉพาะรุ่นสำหรับคำถามที่เกี่ยวข้องกับการแก้ไขมาตรฐานเฉพาะ [C ++ 11], [C ++ 14], [C ++ 17] หรือ [C ++ 20] เป็นต้น

10
ฉันจะดูไฟล์ต้นฉบับ C / C ++ ได้อย่างไรหลังจากประมวลผลล่วงหน้าใน Visual Studio
สมมติว่าฉันมีไฟล์ต้นฉบับที่มีคำสั่ง preprocessor มากมาย เป็นไปได้หรือไม่ที่จะดูว่ามันดูแลตัวประมวลผลล่วงหน้าด้วยหรือไม่

2
C ++ ที่ทันสมัยช่วยเพิ่มประสิทธิภาพให้คุณได้ฟรีหรือไม่?
บางครั้งมีการอ้างว่า C ++ 11/14 สามารถเพิ่มประสิทธิภาพให้คุณได้แม้เพียงแค่รวบรวมรหัส C ++ 98 การให้เหตุผลมักตามแนวความหมายของการย้ายเนื่องจากในบางกรณีตัวสร้าง rvalue จะถูกสร้างขึ้นโดยอัตโนมัติหรือตอนนี้เป็นส่วนหนึ่งของ STL ตอนนี้ฉันสงสัยว่าก่อนหน้านี้กรณีเหล่านี้ได้รับการจัดการโดย RVO หรือการเพิ่มประสิทธิภาพคอมไพเลอร์ที่คล้ายกันแล้ว คำถามของฉันคือถ้าคุณสามารถให้ตัวอย่างจริงของรหัส C ++ 98 ที่ไม่มีการดัดแปลงให้ทำงานได้เร็วขึ้นโดยใช้คอมไพเลอร์ที่สนับสนุนคุณสมบัติภาษาใหม่ ฉันเข้าใจว่าคอมไพเลอร์ที่ได้มาตรฐานไม่จำเป็นต้องทำการคัดลอกและโดยเหตุผลความหมายของการย้ายอาจทำให้เกิดความเร็ว แต่ฉันต้องการเห็นกรณีทางพยาธิวิทยาน้อยลงถ้าคุณต้องการ แก้ไข: เพื่อให้ชัดเจนฉันไม่ได้ถามว่าคอมไพเลอร์ใหม่นั้นเร็วกว่าคอมไพเลอร์เก่าหรือไม่ แต่ถ้ามีโค้ดที่เพิ่ม -std = c ++ 14 ให้คอมไพเลอร์ของฉันมันจะทำงานเร็วขึ้น (หลีกเลี่ยงการทำสำเนา แต่ถ้าคุณ สามารถเกิดขึ้นกับสิ่งอื่นนอกเหนือจากความหมายย้ายฉันก็มีความสนใจเช่นกัน)

15
C ++ แสดงการติดตามสแต็กบนข้อยกเว้น
ฉันต้องการมีวิธีรายงานการติดตามสแต็กกับผู้ใช้หากมีข้อผิดพลาดเกิดขึ้น วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ใช้รหัสพิเศษจำนวนมากหรือไม่ ในการตอบคำถาม: ฉันต้องการให้พกพาได้ถ้าเป็นไปได้ ฉันต้องการข้อมูลที่จะปรากฏขึ้นเพื่อให้ผู้ใช้สามารถคัดลอกกองติดตามและส่งอีเมลถึงฉันหากมีข้อผิดพลาดเกิดขึ้น


16
วิธีการแปลง wstring เป็นสตริง?
คำถามคือวิธีการแปลง wstring เป็นสตริง? ฉันมีตัวอย่างต่อไป: #include <string> #include <iostream> int main() { std::wstring ws = L"Hello"; std::string s( ws.begin(), ws.end() ); //std::cout <<"std::string = "<<s<<std::endl; std::wcout<<"std::wstring = "<<ws<<std::endl; std::cout <<"std::string = "<<s<<std::endl; } เอาต์พุตที่มีบรรทัดที่ใส่ความคิดเห็นคือ: std::string = Hello std::wstring = Hello std::string = Hello แต่ไม่มีเพียง: std::wstring = Hello มีอะไรผิดปกติในตัวอย่างหรือไม่ ฉันสามารถทำการแปลงแบบด้านบนได้ไหม? แก้ไข ตัวอย่างใหม่ …
204 c++  unicode  stl  wstring 

13
อะไรคือความแตกต่างระหว่าง Generics ใน C # และ Java ... และ Templates ใน C ++ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันใช้จาวาและ generics เป็นส่วนใหญ่ค่อนข้างใหม่ ฉันอ่านต่อไปว่า Java ทำการตัดสินใจผิดหรือว่า. NET มีการใช้งานที่ดีขึ้น ฯลฯ ดังนั้นอะไรคือความแตกต่างที่สำคัญระหว่าง C ++, C #, Java ใน generics? ข้อดี / ข้อเสียของแต่ละคน?
203 c#  java  c++  generics  templates 

12
การกระจายตัวของหน่วยความจำคืออะไร?
ฉันได้ยินคำว่า "การกระจายตัวของหน่วยความจำ" ใช้สองสามครั้งในบริบทของการจัดสรรหน่วยความจำแบบไดนามิก C ++ ฉันพบคำถามบางอย่างเกี่ยวกับวิธีจัดการกับการแตกแฟรกเมนต์ของหน่วยความจำ แต่ไม่พบคำถามโดยตรงที่เกี่ยวข้องกับมัน ดังนั้น: การกระจายตัวของหน่วยความจำคืออะไร? ฉันจะทราบได้อย่างไรว่าการกระจายตัวของหน่วยความจำเป็นปัญหาสำหรับแอปพลิเคชันของฉันหรือไม่ รายการประเภทใดที่มีโอกาสประสบมากที่สุด วิธีทั่วไปที่ดีในการจัดการกับการแตกแฟรกเมนต์คืออะไร นอกจากนี้: ฉันได้ยินมาว่าการจัดสรรแบบไดนามิกมากสามารถเพิ่มการกระจายตัวของหน่วยความจำ มันเป็นเรื่องจริงเหรอ? ในบริบทของ C ++ ฉันเข้าใจทุกคอนเทนเนอร์มาตรฐาน (std :: string, std :: vector ฯลฯ ) ใช้การจัดสรรหน่วยความจำแบบไดนามิก หากสิ่งเหล่านี้ถูกใช้ตลอดโปรแกรม (โดยเฉพาะ std :: string) การกระจายตัวของหน่วยความจำมีแนวโน้มที่จะเป็นปัญหาหรือไม่? การแตกแฟรกเมนต์หน่วยความจำจะถูกจัดการได้อย่างไรในแอปพลิเคชัน STL-heavy

18
ใช้“ super” ใน C ++
รูปแบบการเข้ารหัสของฉันมีสำนวนดังต่อไปนี้ class Derived : public Base { public : typedef Base super; // note that it could be hidden in // protected/private section, instead // Etc. } ; สิ่งนี้ทำให้ฉันสามารถใช้ "super" เป็น alias to Base, ตัวอย่างเช่นใน constructors: Derived(int i, int j) : super(i), J(j) { } หรือแม้กระทั่งเมื่อเรียกใช้เมธอดจากคลาสฐานภายในเวอร์ชันที่แทนที่: void Derived::foo() { super::foo() …
203 c++  coding-style 

6
std :: unique_ptr ด้วยประเภทที่ไม่สมบูรณ์จะไม่รวบรวม
ฉันใช้ pimpl-idiom กับstd::unique_ptr: class window { window(const rectangle& rect); private: class window_impl; // defined elsewhere std::unique_ptr<window_impl> impl_; // won't compile }; อย่างไรก็ตามฉันได้รับข้อผิดพลาดในการคอมไพล์เกี่ยวกับการใช้ประเภทที่ไม่สมบูรณ์ในบรรทัด 304 ใน<memory>: แอปพลิเคชันไม่ถูกต้องของ ' sizeof' เป็นประเภทไม่สมบูรณ์ ' uixx::window::window_impl' เท่าที่ฉันรู้std::unique_ptrควรใช้กับประเภทที่ไม่สมบูรณ์ นี่เป็นข้อบกพร่องใน libc ++ หรือฉันทำอะไรผิดที่นี่?

10
กระบวนการจะได้รับ SIGABRT (สัญญาณ 6) เมื่อใด
สถานการณ์ใดบ้างที่กระบวนการรับ SIGABRT ใน C ++ สัญญาณนี้มาจากภายในกระบวนการเสมอหรือสามารถส่งสัญญาณนี้จากกระบวนการหนึ่งไปสู่กระบวนการอื่นได้หรือไม่? มีวิธีการระบุกระบวนการที่กำลังส่งสัญญาณนี้หรือไม่?
202 c++  sigabrt 

7
static_cast <> และการหล่อสไตล์ C แตกต่างกันอย่างไร
มีเหตุผลใดที่จะชอบstatic_cast&lt;&gt;การคัดเลือกนักแสดงสไตล์ C มากกว่าหรือไม่? พวกเขาเท่ากันหรือไม่ การเรียงลำดับความเร็วแตกต่างกันหรือไม่?
202 c++  casting  static-cast 



4
ฉันควรใช้ static_cast หรือ reinterpret_cast เมื่อทำการโมฆะ * ไปยังสิ่งใด
ทั้ง static_cast และ reinterpret_cast ดูเหมือนจะทำงานได้ดีในการคัดเลือกโมฆะ * ไปยังตัวชี้ประเภทอื่น มีเหตุผลที่ดีที่จะสนับสนุนอีกฝ่ายหรือไม่?

12
ในแผนที่ STL ควรใช้แผนที่ :: insert มากกว่า [] หรือไม่
ขณะที่ผ่านมาผมได้มีการพูดคุยกับเพื่อนร่วมงานเกี่ยวกับวิธีการใส่ค่าใน STL เป็นแผนที่ ฉันชอบ map[key] = value; เพราะรู้สึกเป็นธรรมชาติและอ่านง่ายในขณะที่เขาชอบ map.insert(std::make_pair(key, value)) ฉันแค่ถามเขาและพวกเราทั้งสองไม่สามารถจำเหตุผลที่แทรกได้ดีกว่า แต่ฉันแน่ใจว่ามันไม่ใช่แค่การตั้งค่ารูปแบบ แต่มีเหตุผลทางเทคนิคเช่นประสิทธิภาพ อ้างอิง SGI STLบอกว่า "พูดอย่างเคร่งครัดฟังก์ชั่นสมาชิกนี้ไม่จำเป็น: มันมีอยู่เพื่อความสะดวกเท่านั้น" ใครสามารถบอกเหตุผลนั้นกับฉันหรือฉันแค่ฝันว่ามี?
201 c++  stl  map  stdmap 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.