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

จัดทำ C ++ FAQ ที่ทำงานร่วมกันและแก้ไขโดยชุมชน

1
คู่มือและรายการหนังสือ C ++ ที่ชัดเจน
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ Наэтотвопросестьответына Stack Overflow нарусском : КнигииучебныересурсыпоС ++ คำถามนี้พยายามรวบรวมไข่มุกน้อยในหนังสือ C ++ ที่มีการตีพิมพ์ทุกปี แตกต่างจากภาษาการเขียนโปรแกรมอื่น ๆ ซึ่งมักจะหยิบขึ้นมาจากบทเรียนที่พบบนอินเทอร์เน็ตไม่กี่คนที่สามารถรับ C ++ ได้อย่างรวดเร็วโดยไม่ต้องเรียนหนังสือ C ++ ที่เขียนได้ดี มันใหญ่เกินไปและซับซ้อนเกินไปสำหรับการทำเช่นนี้ ในความเป็นจริงมันใหญ่และซับซ้อนมากจนมีหนังสือ C ++ ที่แย่มากๆ และเราไม่ได้พูดถึงสไตล์ที่ไม่ดี แต่สิ่งต่าง ๆ เช่นข้อผิดพลาดทางกีฬาที่เห็นได้ชัดอย่างเห็นได้ชัดและส่งเสริมรูปแบบการเขียนโปรแกรมที่ไม่ดีอย่างแท้จริง โปรดแก้ไขคำตอบที่ได้รับการยอมรับที่จะให้หนังสือที่มีคุณภาพและระดับทักษะตัวอย่าง - โดยเฉพาะอย่างยิ่ง หลังจาก การพูดคุยของคุณนอกจากนี้ในที่ C ++ ห้องแชท (ผู้ปฏิบัติงานประจำอาจเลิกงานของคุณอย่างไร้ความปราณีถ้าพวกเขาไม่เห็นด้วยกับคำแนะนำ) เพิ่มคำอธิบายสั้น ๆ / คำอธิบายเกี่ยวกับหนังสือแต่ละเล่มที่คุณได้อ่าน / ได้รับประโยชน์จากส่วนตัว คุณสามารถอภิปรายคุณภาพหัวข้อและอื่น ๆ หนังสือที่ตรงตามเกณฑ์จะถูกเพิ่มเข้าไปในรายการ …
4243 c++  c++-faq 


30
ทำไม“ ใช้ namespace std;” ถือว่าเป็นการปฏิบัติที่ไม่ดี?
ฉันได้รับการบอกเล่าจากคนอื่นว่าการเขียน using namespace std;ในรหัสที่เป็นธรรมและที่ฉันควรใช้std::coutและstd::cinโดยตรงแทน เหตุใดจึงusing namespace std;ถือว่าเป็นวิธีปฏิบัติที่ไม่ดี มันไม่มีประสิทธิภาพหรือมีความเสี่ยงในการประกาศตัวแปรที่ไม่ชัดเจน (ตัวแปรที่ใช้ชื่อเดียวกันกับฟังก์ชั่นในstdเนมสเปซ)? มันส่งผลกระทบต่อประสิทธิภาพหรือไม่

9
เมื่อใดควรใช้ static_cast, dynamic_cast, const_cast และ reinterpret_cast
อะไรคือการใช้งานที่เหมาะสมของ: static_cast dynamic_cast const_cast reinterpret_cast หล่อสไตล์ C (type)value ฟังก์ชั่นหล่อสไตล์ type(value) เราจะตัดสินใจได้อย่างไรว่าจะใช้ในกรณีใด
2492 c++  pointers  casting  c++-faq 

8
กฎของสามคืออะไร
อะไรคัดลอกวัตถุหมายถึง? ตัวสร้างสำเนาและตัวดำเนินการกำหนดค่าการคัดลอกคืออะไร ฉันต้องประกาศตัวเองเมื่อใด ฉันจะป้องกันไม่ให้คัดลอกวัตถุของฉันได้อย่างไร

7
อะไรคือกฎพื้นฐานและสำนวนสำหรับผู้ให้บริการมากไป?
หมายเหตุ: คำตอบนั้นถูกจัดเรียงตามลำดับที่เฉพาะเจาะจงแต่เนื่องจากผู้ใช้หลายคนเรียงลำดับคำตอบตามการโหวตมากกว่าเวลาที่ได้รับนี่เป็นดัชนีของคำตอบตามลำดับที่พวกเขาเข้าใจมากที่สุด: ไวยากรณ์ทั่วไปของโอเปอร์เรเตอร์ที่บรรทุกเกินพิกัดใน C ++ กฎพื้นฐานสามข้อของผู้ประกอบการมากไปใน C ++ การตัดสินใจระหว่างสมาชิกและไม่ใช่สมาชิก ผู้ประกอบการทั่วไปที่จะเกินพิกัด ผู้ประกอบการที่ได้รับมอบหมาย อินพุตและเอาต์พุตตัวดำเนินการ ผู้ประกอบการโทรฟังก์ชั่น ผู้ประกอบการเปรียบเทียบ ตัวดำเนินการทางคณิตศาสตร์ การห้อยอาร์เรย์ ตัวดำเนินการสำหรับประเภทที่เหมือนตัวชี้ ผู้ประกอบการแปลง การบรรทุกเกินพิกัดใหม่และลบ (หมายเหตุ: นี่คือหมายถึงการเป็นรายการที่จะกองมากเกินของ C ++ คำถามที่พบบ่อย . ถ้าคุณต้องการที่จะวิจารณ์ความคิดของการให้คำถามที่พบบ่อยในรูปแบบนี้แล้วโพสต์บนเมตาที่เริ่มต้นทั้งหมดนี้ . จะเป็นสถานที่ที่จะทำเช่นนั้นได้คำตอบ คำถามนั้นได้รับการตรวจสอบในห้องสนทนา C ++ซึ่งแนวคิด FAQ เริ่มต้นตั้งแต่แรกดังนั้นคำตอบของคุณมีโอกาสมากที่จะได้รับการอ่านโดยผู้ที่คิดแนวคิดนี้)

5
สำนวนคัดลอกและแลกเปลี่ยนคืออะไร?
สำนวนนี้คืออะไรและควรใช้เมื่อใด ปัญหาอะไรที่แก้ได้? สำนวนเปลี่ยนไปเมื่อใช้ C ++ 11 หรือไม่? แม้ว่ามันจะถูกกล่าวถึงในหลาย ๆ ที่ แต่เราก็ไม่มีคำถามและคำตอบว่า "มันคืออะไร" มันจึงเป็นเช่นนี้ นี่คือรายการบางส่วนของสถานที่ที่เคยกล่าวถึง: สำนวนการเข้ารหัส C ++ ที่คุณชื่นชอบคืออะไร: Copy-swap คัดลอกคอนสตรัคเตอร์และ = ตัวดำเนินการโอเวอร์โหลดใน C ++: เป็นฟังก์ชั่นทั่วไปที่เป็นไปได้หรือไม่? การคัดลอกข้อมูลคืออะไรและจะเพิ่มประสิทธิภาพสำนวนการคัดลอกและสลับ C ++: การจัดสรรอาเรย์ของวัตถุแบบไดนามิกหรือไม่?


17
เหตุใดเทมเพลตจึงสามารถใช้ได้ในไฟล์ส่วนหัวเท่านั้น
อ้างอิงจากไลบรารีมาตรฐาน C ++: แบบฝึกหัดและคู่มือ : วิธีพกพาวิธีเดียวในการใช้เทมเพลตในขณะนี้คือการนำไปใช้ในไฟล์ส่วนหัวโดยใช้ฟังก์ชั่นแบบอินไลน์ ทำไมนี้ (การชี้แจง: ไฟล์ส่วนหัวไม่ได้เป็นโซลูชั่นแบบพกพาเท่านั้นแต่เป็นวิธีแบบพกพาที่สะดวกที่สุด)
1776 c++  templates  c++-faq 

12
ซีแมนทิกส์ย้ายคืออะไร?
ฉันเพิ่งเสร็จสิ้นการฟังวิทยุวิศวกรรมซอฟต์แวร์สัมภาษณ์พอดคาสต์กับสกอตต์เมเยอร์สเกี่ยวกับภาษา C ++ 0x คุณสมบัติใหม่ส่วนใหญ่มีเหตุผลสำหรับฉันและฉันรู้สึกตื่นเต้นจริง ๆ กับ C ++ 0x ตอนนี้ยกเว้นหนึ่งคุณลักษณะ ฉันยังไม่เข้าใจความหมาย ... มันคืออะไรกันแน่?

21
เหตุใดฉันจึงควรใช้ตัวชี้แทนวัตถุเอง
ฉันมาจากพื้นหลัง Java และเริ่มทำงานกับวัตถุใน C ++ แต่สิ่งหนึ่งที่เกิดขึ้นกับฉันก็คือผู้คนมักจะใช้พอยน์เตอร์กับวัตถุมากกว่าวัตถุเองเช่นประกาศนี้: Object *myObject = new Object; ค่อนข้างมากกว่า: Object myObject; หรือแทนที่จะใช้ฟังก์ชั่นสมมติว่าtestFunc()เป็นแบบนี้: myObject.testFunc(); เราต้องเขียน: myObject->testFunc(); แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมเราควรทำเช่นนี้ ฉันคิดว่ามันเกี่ยวข้องกับประสิทธิภาพและความเร็วตั้งแต่เราเข้าถึงโดยตรงไปยังที่อยู่หน่วยความจำ ฉันถูกไหม?
1602 c++  c++11  pointers  c++-faq 

30
ข้อผิดพลาดของการอ้างอิงที่ไม่ได้กำหนด / การแก้ไขสัญลักษณ์ภายนอกที่ไม่ได้กำหนดคืออะไรและฉันจะแก้ไขได้อย่างไร
Наэтотвопросестьответына กองมากเกินнарусском : Ссылкананеразрешенныйвнешнийсимвол (возможныепричины) ข้อผิดพลาดของการอ้างอิงที่ไม่ได้กำหนด / การอ้างอิงสัญลักษณ์ภายนอกที่ไม่ได้แก้ไขคืออะไร สาเหตุที่พบบ่อยคืออะไรและจะแก้ไข / ป้องกันได้อย่างไร รู้สึกอิสระที่จะแก้ไข / เพิ่มของคุณเอง

9
แลมบ์ดาแสดงออกใน C ++ 11 คืออะไร?
แลมบ์ดาแสดงออกใน C ++ 11 คืออะไร? ฉันจะใช้เมื่อใด ปัญหาประเภทใดที่พวกเขาแก้ได้ที่ไม่สามารถทำได้ก่อนการเปิดตัว? ตัวอย่างเล็ก ๆ น้อย ๆ และการใช้เคสจะมีประโยชน์
1487 c++  lambda  c++11  c++-faq 

11
rvalues, lvalues, xvalues, glvalues ​​และ prvalues ​​คืออะไร?
ใน C ++ 03, การแสดงออกเป็นทั้งrvalueหรือlvalue ใน C ++ 11 นิพจน์สามารถเป็น: rvalue lvalue Xvalue glvalue prvalue สองประเภทได้กลายเป็นห้าประเภท นิพจน์ประเภทใหม่เหล่านี้มีอะไรบ้าง หมวดหมู่ใหม่เหล่านี้เกี่ยวข้องกับหมวด rvalue และ lvalue ที่มีอยู่ได้อย่างไร หมวดหมู่ rvalue และ lvalue ใน C ++ 0x เหมือนกับที่อยู่ใน C ++ 03 หรือไม่? เหตุใดจึงต้องมีหมวดหมู่ใหม่เหล่านี้ เป็นWG21เทพแค่พยายามที่จะสร้างความสับสนให้เราปุถุชนเพียง?
1356 c++  expression  c++-faq  c++11 

6
ฉันต้องใส่คำหลัก“ เทมเพลต” และ“ พิมพ์ชื่อ” ที่ไหนและทำไม
ในแม่ที่และทำไมฉันต้องใส่typenameและtemplateรายชื่อขึ้นอยู่? ชื่อที่ขึ้นต่อกันคืออะไรกันแน่? ฉันมีรหัสต่อไปนี้: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // ... template<typename U> struct inUnion { // Q: where to add typename/template here? typedef Tail::inUnion<U> dummy; }; template< > struct inUnion<T> { }; }; template <typename T> // …

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