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

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

17
ทำไมต้องใช้พอยน์เตอร์? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันรู้ว่านี่เป็นคำถามพื้นฐานจริง ๆ แต่ฉันเพิ่งเริ่มต้นด้วยการเขียนโปรแกรม C ++ ขั้นพื้นฐานบางอย่างหลังจากเขียนโค้ดโปรเจ็กต์ด้วยภาษาระดับสูง โดยทั่วไปฉันมีสามคำถาม: เหตุใดจึงใช้พอยน์เตอร์แทนตัวแปรปกติ ฉันควรใช้พอยน์เตอร์เมื่อใดและที่ไหน คุณใช้พอยน์เตอร์กับอาร์เรย์ได้อย่างไร
356 c++  c  pointers 

30
เมื่อใดที่คุณควรใช้ 'เพื่อน' ใน C ++
ฉันได้อ่านคำถามที่พบบ่อย C ++และอยากรู้เกี่ยวกับการfriendประกาศ ฉันเองไม่เคยใช้มันเป็นการส่วนตัว แต่ฉันสนใจที่จะสำรวจภาษา ตัวอย่างที่ดีของการใช้friendคืออะไร อ่านคำถามที่พบบ่อยอีกเล็กน้อยฉันชอบความคิดของ<< >>ผู้ประกอบการมากไปและเพิ่มเป็นเพื่อนของชั้นเรียนเหล่านั้น อย่างไรก็ตามฉันไม่แน่ใจว่าวิธีนี้จะไม่ทำลาย encapsulation ข้อยกเว้นเหล่านี้จะอยู่ภายในความเข้มงวดของ OOP เมื่อใด
354 c++  oop  encapsulation  friend 

28
enum เป็นสตริงใน C ++ 11 / C ++ 14 / C ++ 17 ที่ทันสมัยและ C ++ ในอนาคต 20
ตรงกันข้ามกับคำถามที่คล้ายกันทั้งหมดคำถามนี้เกี่ยวกับการใช้คุณสมบัติ C ++ ใหม่ 2008 ค มีวิธีง่าย ๆ ในการแปลง C ++ enum เป็นสายอักขระ? 2008 ค วิธีง่ายๆในการใช้ตัวแปรประเภท enum เป็นสตริงใน C? 2008 C ++ วิธีการแมป c ++ enums กับสตริงได้อย่างง่ายดาย 2008 C ++ ทำบางสิ่งบางอย่างทั้งตัวระบุ C และสตริง? 2008 C ++ มีสคริปต์ง่าย ๆ ในการแปลง C ++ enum เป็นสตริงหรือไม่ 2009 C ++ จะใช้ enums เป็นค่าสถานะใน C …
354 c++  string  enums  c++17  c++20 

11
แก้ไขข้อผิดพลาดของบิลด์เนื่องจากการขึ้นต่อกันระหว่างคลาส
ฉันมักจะพบว่าตัวเองอยู่ในสถานการณ์ที่ฉันกำลังหันหน้าไปทางข้อผิดพลาดการรวบรวม / ลิงเกอร์ในหลายโครงการ c ++ เนื่องจากบางตัดสินใจที่เลวร้ายออกแบบ (ทำโดยคนอื่น :)) ซึ่งนำไปสู่การพึ่งพาวงกลมระหว่างเรียน c ++ ในส่วนหัวของไฟล์ที่แตกต่างกัน(สามารถเกิดขึ้นได้ยัง ในไฟล์เดียวกัน) แต่โชคดี (?) สิ่งนี้ไม่ได้เกิดขึ้นบ่อยครั้งพอที่ฉันจะจดจำวิธีแก้ปัญหานี้ในครั้งต่อไปที่มันเกิดขึ้นอีกครั้ง ดังนั้นเพื่อวัตถุประสงค์ในการเรียกคืนได้ง่ายในอนาคตฉันจะโพสต์ปัญหาตัวแทนและแนวทางแก้ไขพร้อมกับมัน ทางออกที่ดีกว่ายินดีต้อนรับแน่นอน A.h class B; class A { int _val; B *_b; public: A(int val) :_val(val) { } void SetB(B *b) { _b = b; _b->Print(); // COMPILER ERROR: C2027: use of undefined type …



9
เหตุใดฉันจึงไม่สามารถสร้างเวกเตอร์ของการอ้างอิงได้
เมื่อฉันทำสิ่งนี้: std::vector<int> hello; ทุกอย่างใช้งานได้ดี อย่างไรก็ตามเมื่อฉันทำให้เป็นเวกเตอร์ของการอ้างอิงแทน: std::vector<int &> hello; ฉันได้รับข้อผิดพลาดที่น่ากลัวเช่น ข้อผิดพลาด C2528: 'ตัวชี้': ตัวชี้ไปยังการอ้างอิงนั้นผิดกฎหมาย ฉันต้องการใส่การอ้างอิงจำนวนมากเพื่อวางโครงสร้างในเวกเตอร์เพื่อที่ฉันจะได้ไม่ต้องยุ่งกับพอยน์เตอร์ ทำไมเวกเตอร์ถึงโกรธเคืองเรื่องนี้? ตัวเลือกเดียวของฉันคือใช้เวกเตอร์พอยน์เตอร์แทนหรือไม่

7
ฉันต้องโทรหา destructor เสมือนจริงอย่างชัดเจนหรือไม่
เมื่อลบล้างคลาสใน C ++ (พร้อมด้วย destructor เสมือนจริง) ฉันกำลังใช้ destructor อีกครั้งเป็นเสมือนบนคลาสที่สืบทอด แต่ฉันต้องเรียกใช้ตัวทำลายฐานหรือไม่? ถ้าอย่างนั้นฉันคิดว่ามันเป็นเช่นนี้ ... MyChildClass::~MyChildClass() // virtual in header { // Call to base destructor... this->MyBaseClass::~MyBaseClass(); // Some destructing specific to MyChildClass } ฉันถูกไหม?
351 c++  destructor 

6
"enable_shared_from_this" นี้มีประโยชน์อย่างไร
ฉันวิ่งข้ามenable_shared_from_thisในขณะที่อ่านตัวอย่าง Boost.Asio และหลังจากอ่านเอกสารฉันยังคงหลงทางว่าควรใช้สิ่งนี้อย่างถูกต้องอย่างไร ใครช่วยได้โปรดยกตัวอย่างและคำอธิบายว่าเมื่อใดที่ใช้คลาสนี้
349 c++  boost  boost-asio  tr1 

6
std :: unique_lock <std :: mutex> หรือ std :: lock_guard <std :: mutex>?
ตั้งค่าใหม่ให้กับStack Overflow ที่ใช้งานอยู่ : Чем std :: unique_lock отличаетсяот std :: lock_guard? ฉันมีสองกรณีใช้ A. ฉันต้องการซิงโครไนซ์การเข้าถึงโดยสองเธรดกับคิว B. ฉันต้องการซิงโครไนซ์การเข้าถึงโดยสองเธรดกับคิวและใช้ตัวแปรเงื่อนไขเพราะหนึ่งในเธรดจะรอเนื้อหาที่จะเก็บไว้ในคิวโดยเธรดอื่น สำหรับกรณีที่ใช้ AI std::lock_guard&lt;&gt;ดูตัวอย่างการใช้รหัส สำหรับกรณีการใช้งาน BI std::unique_lock&lt;&gt;ดูตัวอย่างการใช้รหัส อะไรคือความแตกต่างระหว่างทั้งสองกับสิ่งที่ฉันควรใช้ในกรณีที่ใช้?

5
__attribute __ ((constructor)) ทำงานอย่างไร
ดูเหมือนจะค่อนข้างชัดเจนว่าควรตั้งค่าสิ่งต่าง ๆ มันจะทำงานเมื่อใด เหตุใดจึงมีสองวงเล็บ คือ__attribute__ฟังก์ชั่น? แมโครหรือไม่? ไวยากรณ์? ใช้งานได้ใน C หรือไม่ c ++? ฟังก์ชั่นนี้ใช้งานได้กับต้องเป็นแบบคงที่หรือไม่? __attribute__((destructor))ทำงานเมื่อไหร่ ตัวอย่างใน Objective-C : __attribute__((constructor)) static void initialize_navigationBarImages() { navigationBarImages = [[NSMutableDictionary alloc] init]; } __attribute__((destructor)) static void destroy_navigationBarImages() { [navigationBarImages release]; }
348 c++  objective-c  c  gcc 

12
คำอธิบาย Virtual / pure virtual
มันหมายความว่าอะไรถ้าฟังก์ชั่นถูกกำหนดให้เป็นเสมือนจริงและมันก็เหมือนกับของแท้
346 c++  virtual 

6
ฉันควรใช้ตัวแยกวิเคราะห์ XML ใดใน C ++ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันมีเอกสาร XML ที่ฉันต้องแยกวิเคราะห์และ / หรือฉันต้องการสร้างเอกสาร XML และเขียนลงในข้อความ (ไฟล์หรือหน่วยความจำ) เนื่องจากไลบรารีมาตรฐาน C ++ ไม่มีไลบรารีสำหรับสิ่งนี้ฉันควรใช้อะไร หมายเหตุ:นี่มีวัตถุประสงค์เพื่อให้เป็นคำถามที่ชัดเจน C ++ - คำถามที่พบบ่อยเกี่ยวกับสไตล์นี้ ใช่แล้วมันเป็นรายการที่ซ้ำกันของผู้อื่น ฉันไม่ได้ตอบคำถามเหล่านั้นอย่างเหมาะสมเพราะพวกเขามักจะถามอะไรที่เฉพาะเจาะจงมากกว่านี้เล็กน้อย คำถามนี้เป็นคำถามทั่วไป
344 c++  xml-parsing  c++-faq 

16
การฝึกในการส่งคืนตัวแปรอ้างอิง C ++ นั้นชั่วร้ายหรือไม่?
ฉันคิดว่ามันเป็นเรื่องส่วนตัว ฉันไม่แน่ใจว่าความคิดเห็นจะเป็นเอกฉันท์หรือไม่ (ฉันเห็นตัวอย่างโค้ดจำนวนมากซึ่งส่งคืนการอ้างอิง) จากความคิดเห็นที่มีต่อคำถามนี้ฉันเพิ่งถามเกี่ยวกับการเริ่มต้นการอ้างอิงการอ้างอิงกลับอาจเป็นความชั่วเพราะ [อย่างที่ฉันเข้าใจ] มันทำให้ง่ายต่อการพลาดการลบซึ่งจะนำไปสู่การรั่วไหลของหน่วยความจำ สิ่งนี้ทำให้ฉันเป็นกังวลขณะที่ฉันติดตามตัวอย่าง (เว้นแต่ฉันจะจินตนาการถึงสิ่งต่าง ๆ ) และทำสิ่งนี้ในสถานที่ที่เหมาะสม ... ฉันเข้าใจผิดหรือเปล่า? มันชั่วร้ายเหรอ? ถ้าเป็นเช่นนั้นความชั่วร้ายเพียงใด? ฉันรู้สึกว่าเนื่องจากพอยน์เตอร์และการอ้างอิงแบบผสมของฉันรวมกับความจริงที่ว่าฉันใหม่กับ C ++ และความสับสนอย่างสมบูรณ์เกี่ยวกับสิ่งที่จะใช้เมื่อแอปพลิเคชันของฉันต้องเป็นนรกหน่วยความจำรั่วไหล ... นอกจากนี้ฉันเข้าใจว่าการใช้ตัวชี้สมาร์ท / แชร์นั้นเป็นที่ยอมรับโดยทั่วไปว่าเป็นวิธีที่ดีที่สุดในการหลีกเลี่ยงการรั่วไหลของหน่วยความจำ
341 c++  reference  c++-faq 

7
ฉันสามารถเรียกใช้ฟังก์ชันเสมือนของคลาสพื้นฐานได้หรือไม่ถ้าฉันลบล้างมัน?
ว่าฉันมีชั้นเรียนFooและBarตั้งค่าเช่นนี้: class Foo { public: int x; virtual void printStuff() { std::cout &lt;&lt; x &lt;&lt; std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout &lt;&lt; y &lt;&lt; std::endl; } }; ดังที่อธิบายไว้ในรหัสฉันต้องการที่จะสามารถเรียกฟังก์ชั่นระดับฐานที่ฉันเอาชนะ ใน Java มีsuper.funcname()ไวยากรณ์ เป็นไปได้ใน …

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