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

ใช้แท็กนี้สำหรับรหัสที่ต้องคอมไพล์เป็น C ++ 11 (ไม่ใช้ฟีเจอร์ที่แนะนำใน C ++ 14 หรือใหม่กว่า)

8
C ++ 11 แนะนำรุ่นหน่วยความจำที่ได้มาตรฐาน มันหมายความว่าอะไร? แล้วมันจะมีผลกับการเขียนโปรแกรม C ++ อย่างไร?
C ++ 11 นำเสนอโมเดลหน่วยความจำที่ได้มาตรฐาน แต่นั่นหมายความว่าอย่างไร แล้วมันจะมีผลกับการเขียนโปรแกรม C ++ อย่างไร? บทความนี้ (โดยกาวินคล๊าร์คซึ่งเป็นผู้เสนอราคาHerb Sutter ) กล่าวว่า รุ่นหน่วยความจำหมายความว่าตอนนี้รหัส C ++ มีไลบรารีมาตรฐานที่จะเรียกโดยไม่คำนึงว่าใครเป็นผู้สร้างคอมไพเลอร์และแพลตฟอร์มใดที่ทำงานอยู่ มีวิธีมาตรฐานในการควบคุมว่าเธรดที่แตกต่างพูดคุยกับหน่วยความจำของโปรเซสเซอร์ได้อย่างไร “ เมื่อคุณกำลังพูดถึงการแยก [รหัส] ข้ามคอร์ต่าง ๆ ที่อยู่ในมาตรฐานเรากำลังพูดถึงโมเดลหน่วยความจำเราจะเพิ่มประสิทธิภาพโดยไม่ทำลายสมมติฐานต่อไปนี้ที่ผู้คนจะทำในรหัส” ซัทเทอร์กล่าว ฉันสามารถจดจำย่อหน้านี้และย่อหน้าที่คล้ายกันได้ทางออนไลน์ (เนื่องจากฉันมีโมเดลความจำของตัวเองตั้งแต่แรกเกิด: P) และยังสามารถโพสต์เป็นคำตอบสำหรับคำถามที่ถามโดยคนอื่น ๆ แต่จริงๆแล้วฉันไม่เข้าใจเลย นี้. โปรแกรมเมอร์ C ++ เคยพัฒนาแอพพลิเคชั่นแบบมัลติเธรดมาก่อนดังนั้นมันจะสำคัญอย่างไรถ้าเป็นเธรด POSIX หรือเธรด Windows หรือเธรด C ++ 11 ประโยชน์คืออะไร ฉันต้องการที่จะเข้าใจรายละเอียดในระดับต่ำ ฉันรู้สึกเช่นนี้ด้วยว่ารูปแบบหน่วยความจำ C ++ 11 …


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 

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 

7
อะไรคือความแตกต่างระหว่าง 'typedef' และ 'using' ใน C ++ 11?
ฉันรู้ว่าใน C ++ 11 ตอนนี้เราสามารถใช้usingเพื่อเขียนนามแฝงประเภทเช่นtypedefs: typedef int MyInt; คือจากสิ่งที่ฉันเข้าใจเทียบเท่ากับ: using MyInt = int; และไวยากรณ์ใหม่นั้นเกิดขึ้นจากความพยายามที่จะมีวิธีในการแสดงออก " template typedef": template< class T > using MyType = AnotherType< T, MyAllocatorType >; แต่ด้วยสองตัวอย่างแรกที่ไม่ใช่แม่แบบมีความแตกต่างเล็กน้อยอื่น ๆ ในมาตรฐานหรือไม่ ตัวอย่างเช่นใช้typedefนามแฝงด้วยวิธี "อ่อนแอ" นั่นคือมันไม่ได้สร้างประเภทใหม่ แต่มีเพียงชื่อใหม่เท่านั้น (การแปลงนั้นมีนัยยะระหว่างชื่อเหล่านั้น) มันเหมือนกันกับusingหรือสร้างชนิดใหม่หรือไม่ มีความแตกต่างหรือไม่?

4
T&& (เครื่องหมายคู่คู่) หมายถึงอะไรใน C ++ 11
ฉันได้รับการมองเข้าไปในบางส่วนของคุณสมบัติใหม่ของ C ++ 11 T&& varและเป็นหนึ่งฉันได้สังเกตเห็นเป็นเครื่องหมายคู่ในตัวแปรประกาศเช่น สำหรับการเริ่มต้นสัตว์ร้ายตัวนี้เรียกว่าอะไร? ฉันต้องการให้ Google อนุญาตให้เราค้นหาเครื่องหมายวรรคตอนเช่นนี้ มันหมายความว่าอะไรกันแน่? จากภาพรวมในครั้งแรกดูเหมือนว่าจะเป็นการอ้างอิงสองครั้ง (เช่นตัวชี้ดับเบิลแบบ C T** var) แต่ฉันมีความลำบากในการนึกถึงกรณีการใช้งานสำหรับสิ่งนั้น

7
push_back กับ emplace_back
ฉันบิตสับสนเกี่ยวกับความแตกต่างระหว่างและpush_backemplace_back void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); เนื่องจากมีการใช้งานpush_backมากเกินไปในการอ้างอิงค่า rvalue ฉันไม่เห็นเลยว่าจุดประสงค์ของการemplace_backเป็นอย่างไร


13
วันของการส่ง const std :: string & เป็นพารามิเตอร์มากกว่าหรือไม่
ผมได้ยินพูดคุยล่าสุดโดย Sutter สมุนไพรที่ชี้ให้เห็นว่าเหตุผลที่จะผ่านstd::vectorและstd::stringโดยconst &ที่หายไปส่วนใหญ่ เขาแนะนำว่าการเขียนฟังก์ชั่นเช่นตอนนี้ดีกว่า std::string do_something ( std::string inval ) { std::string return_val; // ... do stuff ... return return_val; } ฉันเข้าใจว่าค่าreturn_valจะเป็น rvalue ณ จุดที่ฟังก์ชันส่งคืนและสามารถส่งคืนได้โดยใช้การย้ายความหมายซึ่งมีราคาถูกมาก อย่างไรก็ตามinvalยังคงมีขนาดใหญ่กว่าขนาดของการอ้างอิง (ซึ่งโดยปกติจะใช้เป็นตัวชี้) เนื่องจากstd::stringมีส่วนประกอบต่าง ๆ รวมถึงตัวชี้ไปยังฮีปและสมาชิกchar[]สำหรับการออปติไมซ์สตริงสั้น ๆ ดังนั้นสำหรับฉันแล้วการอ้างอิงโดยผ่านยังคงเป็นแนวคิดที่ดี มีใครอธิบายได้บ้างว่าทำไมสมุนไพรถึงพูดแบบนี้?
604 c++  c++11 


13
nullptr คืออะไร
ตอนนี้เรามี C ++ 11 พร้อมคุณสมบัติใหม่มากมาย อันใหม่ที่น่าสนใจและสับสน (อย่างน้อยสำหรับฉัน) คือสิ่งใหม่nullptrเป็นใหม่ ไม่จำเป็นสำหรับแมโครที่น่ารังเกียจอีกต่อไปNULLแล้ว int* x = nullptr; myclass* obj = nullptr; ถึงกระนั้นฉันก็ยังไม่ได้nullptrผล ตัวอย่างเช่นบทความ Wikipediaพูดว่า: C ++ 11 แก้ไขสิ่งนี้โดยการแนะนำคำสำคัญใหม่เพื่อใช้เป็นค่าคงที่ตัวชี้โมฆะที่แตกต่าง: nullptr มันเป็นประเภท nullptr_tซึ่งสามารถแปลงได้โดยปริยายและสามารถเทียบได้กับชนิดตัวชี้หรือชนิดตัวชี้ไปยังสมาชิก มันไม่สามารถเปลี่ยนแปลงได้โดยปริยายหรือเทียบเคียงได้กับชนิดอินทิกรัลยกเว้นสำหรับบูล มันเป็นคำหลักและตัวอย่างของประเภทได้อย่างไร นอกจากนี้คุณยังมีตัวอย่างอีก (นอกเหนือจาก Wikipedia) ซึ่งnullptrดีกว่าเก่า0หรือไม่
570 c++  pointers  c++11  nullptr 

6
Aggregates และ PODs คืออะไรและทำไมพิเศษ?
นี้คำถามที่พบบ่อยเป็นเรื่องเกี่ยวกับปริมาณและ PODs และครอบคลุมวัสดุดังต่อไปนี้: อะไรคือมวล ? อะไรคือPOD s (ข้อมูล Plain Old)? พวกเขาเกี่ยวข้องกันอย่างไร พวกเขาพิเศษอย่างไรและทำไม การเปลี่ยนแปลงสำหรับ C ++ 11 คืออะไร

6
กฎการยกเลิก Iterator
กฎการตรวจสอบความถูกต้องของตัววนซ้ำสำหรับคอนเทนเนอร์ C ++ มีอะไรบ้าง โดยเฉพาะอย่างยิ่งในรูปแบบรายการสรุป (หมายเหตุ: นี่คือหมายถึงการเป็นรายการที่จะกองมากเกินของ C ++ คำถามที่พบบ่อย . ถ้าคุณต้องการที่จะวิจารณ์ความคิดของการให้คำถามที่พบบ่อยในรูปแบบนี้แล้วโพสต์บนเมตาที่เริ่มต้นทั้งหมดนี้ . จะเป็นสถานที่ที่จะทำเช่นนั้นได้คำตอบ คำถามนั้นได้รับการตรวจสอบในห้องสนทนา C ++ซึ่งแนวคิด FAQ เริ่มต้นตั้งแต่แรกดังนั้นคำตอบของคุณมีโอกาสมากที่จะได้รับการอ่านโดยผู้ที่คิดแนวคิดนี้)
543 c++  c++11  iterator  c++17  c++-faq 

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