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

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

6
C ++ 11 rvalues ​​และย้ายความสับสนของซีแมนทิกส์ (คำสั่ง return)
ฉันพยายามเข้าใจการอ้างอิงค่าและย้ายซีแมนทิกส์ของ C ++ 11 อะไรคือความแตกต่างระหว่างตัวอย่างเหล่านี้และสิ่งใดที่จะไม่คัดลอกเวกเตอร์ ตัวอย่างแรก std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return tmp; } std::vector<int> &&rval_ref = return_vector(); ตัวอย่างที่สอง std::vector<int>&& return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector(); ตัวอย่างที่สาม std::vector<int> return_vector(void) { std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp); } std::vector<int> &&rval_ref = return_vector();


12
ความแตกต่างระหว่าง float และ double คืออะไร?
ฉันได้อ่านเกี่ยวกับความแตกต่างระหว่างความแม่นยำสองเท่าและความแม่นยำเดี่ยว อย่างไรก็ตามในกรณีส่วนใหญ่floatและdoubleดูเหมือนว่าจะใช้แทนกันคือการใช้อย่างใดอย่างหนึ่งดูเหมือนจะไม่ส่งผลกระทบต่อผล เป็นกรณีนี้จริงเหรอ? เมื่อไหร่ที่จะลอยและเปลี่ยนเป็นสองเท่าได้? ความแตกต่างระหว่างพวกเขาคืออะไร?

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

10
สตริง c ++ หลายบรรทัดตามตัวอักษร
มีวิธีใดบ้างที่จะมีข้อความธรรมดาหลายบรรทัดตัวอักษรคงที่ใน C ++ หรือไม่? อาจจะมีเคล็ดลับการแยกวิเคราะห์ด้วย#includeไฟล์หรือไม่ ฉันคิดไม่ออกเลย แต่เด็กผู้ชายนั่นคงจะดี ฉันรู้ว่ามันจะอยู่ใน C ++ 0x


22
มีประโยชน์อะไรบ้างสำหรับ "การจัดวางใหม่"
มีใครที่นี่เคยใช้ "ตำแหน่งใหม่" ของ C ++ หรือไม่ ถ้าใช่มีไว้เพื่ออะไร ดูเหมือนว่าฉันจะเป็นประโยชน์กับฮาร์ดแวร์ที่แมปหน่วยความจำเท่านั้น

9
ความหมายของเครื่องหมายทวิภาคคู่แบบ“ prepended” คืออะไร?
ฉันพบบรรทัดของรหัสนี้ในคลาสที่ฉันต้องแก้ไข: ::Configuration * tmpCo = m_configurationDB;//pointer to current db และฉันไม่รู้ว่าหมายถึงอะไรเครื่องหมายทวิภาคคู่ที่ต่อท้ายชื่อคลาส หากปราศจากสิ่งนั้นฉันก็จะอ่าน: การประกาศtmpCoเป็นตัวชี้ไปยังวัตถุของคลาสConfiguration... แต่เครื่องหมายโคลอนคู่ที่เติมไว้ทำให้ฉันสับสน ฉันก็ค้นพบ: typedef ::config::set ConfigSet;

23
จะกำจัด `การแปลงที่เลิกใช้งานแล้วจากค่าคงที่สตริงเป็น 'char *' 'คำเตือนใน GCC ได้อย่างไร
ดังนั้นฉันกำลังทำงานกับ codebase ขนาดใหญ่เหลือเกินและเพิ่งอัพเกรดเป็น gcc 4.3 ซึ่งตอนนี้เป็นต้นเหตุของคำเตือนนี้: คำเตือน: การแปลงที่ไม่สนับสนุนจากค่าคงที่สตริงเป็น 'char *' เห็นได้ชัดว่าวิธีที่ถูกต้องในการแก้ไขปัญหานี้คือการค้นหาประกาศทั้งหมดเช่น char *s = "constant string"; หรือฟังก์ชั่นการโทรเช่น: void foo(char *s); foo("constant string"); และทำให้เป็นพconst charอยน์เตอร์ อย่างไรก็ตามนั่นหมายถึงการสัมผัสไฟล์ 564 ขั้นต่ำซึ่งไม่ใช่งานที่ฉันต้องการจะทำในเวลานี้ ปัญหาตอนนี้คือฉันกำลังทำงานด้วย-werrorดังนั้นฉันต้องการวิธีที่จะยับยั้งคำเตือนเหล่านี้ ฉันจะทำสิ่งนั้นได้อย่างไร
409 c++  string  gcc 

21
มีฟังก์ชั่นสัญญาณมาตรฐาน (signum, sgn) ใน C / C ++ หรือไม่
ฉันต้องการฟังก์ชั่นที่คืนค่า -1 สำหรับจำนวนลบและ +1 สำหรับจำนวนบวก http://en.wikipedia.org/wiki/Sign_function มันง่ายพอที่จะเขียนของฉันเอง แต่ดูเหมือนว่าบางสิ่งที่ควรจะอยู่ในห้องสมุดมาตรฐานที่ไหนสักแห่ง แก้ไข: โดยเฉพาะฉันกำลังมองหาฟังก์ชั่นที่ทำงานกับลอย
409 c++  c  math 

23
ตัวเลือกใดดีกว่าที่จะใช้สำหรับหารจำนวนเต็ม 2
เทคนิคใดต่อไปนี้เป็นตัวเลือกที่ดีที่สุดสำหรับการหารจำนวนเต็ม 2 และทำไม เทคนิค 1: x = x >> 1; เทคนิค 2: x = x / 2; นี่xคือจำนวนเต็ม

20
C ++ ไม่มีบริบทหรือคำนึงถึงบริบทหรือไม่
ฉันมักจะได้ยินคำกล่าวอ้างว่า C ++ เป็นภาษาที่คำนึงถึงบริบท นำตัวอย่างต่อไปนี้: a b(c); นี่เป็นคำนิยามตัวแปรหรือการประกาศฟังก์ชันหรือไม่ cที่ขึ้นอยู่กับความหมายของสัญลักษณ์ ถ้าcเป็นตัวแปรแล้วa b(c);กำหนดชื่อตัวแปรประเภทb มันจะเริ่มต้นได้โดยตรงกับa cแต่ถ้าcเป็นประเภทแล้วa b(c);ประกาศฟังก์ชั่นที่มีชื่อbที่ใช้และส่งกลับca หากคุณค้นหาคำจำกัดความของภาษาที่ไม่มีบริบทมันจะบอกคุณโดยทั่วไปว่ากฎไวยากรณ์ทั้งหมดต้องมีด้านซ้ายมือที่ประกอบด้วยสัญลักษณ์ที่ไม่ใช่เทอร์มินัล ในทางกลับกันไวต่อไวยากรณ์อนุญาตให้ใช้สตริงของเทอร์มินัลและสัญลักษณ์ที่ไม่ใช่เทอร์มินัลโดยพลการด้านซ้ายมือ การเรียกดูผ่านภาคผนวก A ของ "ภาษาการเขียนโปรแกรม C ++" ฉันไม่สามารถหากฎไวยากรณ์เดียวที่มีสิ่งอื่นนอกเหนือจากสัญลักษณ์ที่ไม่ใช่เทอร์มินัลเดียวที่ด้านซ้ายมือ นั่นหมายความว่า C ++ นั้นไม่มีบริบท (แน่นอนว่าภาษาที่ไม่มีบริบททุกภาษานั้นมีความอ่อนไหวตามบริบทด้วยในแง่ที่ว่าภาษาที่ไม่ใช้บริบทนั้นเป็นส่วนย่อยของภาษาที่คำนึงถึงบริบท แต่นั่นไม่ใช่ประเด็น) ดังนั้น C ++ ไม่มีบริบทหรือตามบริบทหรือไม่

4
ทำไมการเริ่มต้นรายการ (โดยใช้เครื่องหมายปีกกาแบบโค้ง) ดีกว่าตัวเลือกอื่น ๆ
MyClass a1 {a}; // clearer and less error-prone than the other three MyClass a2 = {a}; MyClass a3 = a; MyClass a4(a); ทำไม? ฉันไม่พบคำตอบใน SO ดังนั้นให้ฉันตอบคำถามของฉันเอง



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