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

คำถามเกี่ยวกับ C ++ ซึ่งเป็นภาษาการเขียนแบบสแตติกแบบหลายกระบวนทัศน์รวบรวมภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไป

9
เหตุใดข้อความยกเว้นจำนวนมากจึงไม่มีรายละเอียดที่เป็นประโยชน์
ดูเหมือนจะมีจำนวนหนึ่งของข้อตกลงที่ข้อความยกเว้นควรมีรายละเอียดที่เป็นประโยชน์ ทำไมจึงเป็นเช่นนั้นข้อยกเว้นที่พบบ่อยจำนวนมากจากส่วนประกอบของระบบไม่มีรายละเอียดที่เป็นประโยชน์ ตัวอย่างบางส่วน: การListเข้าถึงดัชนี. NET ArgumentOutOfRangeExceptionไม่ได้บอกค่าดัชนีที่พยายามแล้วและไม่ถูกต้องและไม่ได้บอกช่วงที่อนุญาต โดยทั่วไปข้อความข้อยกเว้นทั้งหมดจากไลบรารีมาตรฐาน MSVC C ++ นั้นไร้ประโยชน์อย่างเต็มที่ (ในหลอดเลือดดำเดียวกันกับด้านบน) ข้อยกเว้นของออราเคิลใน .NET บอกคุณ (ถอดความ) "ตารางหรือมุมมองไม่พบ" แต่ไม่ได้ที่หนึ่ง ดังนั้นสำหรับฉันดูเหมือนว่าข้อความยกเว้นส่วนใหญ่ไม่มีรายละเอียดเพียงพอที่จะเป็นประโยชน์ ความคาดหวังของฉันอยู่นอกสายหรือไม่? ฉันใช้ข้อยกเว้นผิดที่ฉันสังเกตเห็นสิ่งนี้ด้วยหรือไม่ หรืออาจจะเป็นความประทับใจของฉันคือผิดส่วนใหญ่ของข้อยกเว้นไม่จริงให้รายละเอียดมีประโยชน์หรือไม่
220 c#  c++  exceptions 

30
พ่อของฉันใจร้อนกับการเรียนรู้ที่จะก้าวไปสู่ ฉันจะทำอย่างไร [ปิด]
ดังนั้นพ่อของฉันซื้อหนังสือ 5 เล่มให้ฉันเกี่ยวกับการเขียนโปรแกรม (C ++, Java, PHP, Javascript, Android) ประมาณหนึ่งเดือนที่แล้ว เขาเป็นสถาปนิกและเขารู้ว่าไม่มีอะไรเกี่ยวกับการเขียนโปรแกรม เขาซื้อมาให้ฉันเพราะฉันบอกว่าการเขียนโปรแกรมสนุกและฉันต้องการเรียนรู้มัน อย่างที่คุณอาจรู้ว่าการเป็นเด็ก (ฉันอายุ 14 ปี) และได้รับคำสั่งให้เรียนรู้การเขียนโปรแกรมจากหนังสือที่ไม่น่าเบื่อไม่ใช่สิ่งที่ง่ายที่สุด ฉันมักจะไขว้เขว .. ฉันบอกเขาก่อนว่าฉันไม่จำเป็นต้องซื้อหนังสือและฉันก็แค่ดูบทเรียนออนไลน์ .. แต่ไม่เลยเขาล้าสมัยมาก เขาให้ฉันใช้หนังสือเท่านั้น เมื่อเร็ว ๆ นี้เขาเริ่มถามฉันว่าฉันได้ทำอะไรไปแล้วและฉันแสดงโปรแกรม C ++ ที่ฉันทำตามสิ่งที่คุณพิมพ์แล้วกำหนดค่าให้กับตัวอักษรแต่ละตัว (A เป็นตัวอักษรตัวแรกในตัวอักษรเพื่อให้ได้ค่า ของ 1) .. และอื่น ๆ จากนั้นจะเพิ่มค่าทั้งหมดและบอกให้คุณทราบ ดังนั้นคำว่า "เพิ่ม" จะมีค่าเท่ากับ 9 ^^ นั่นไม่ค่อยน่าประทับใจสำหรับเขา เขาตะโกนใส่ฉันและบอกฉันว่าฉันทำไปแล้วนั่นคือการคาดคั้น ที่ไม่เป็นความจริง. เขาเป็นคนดั้งเดิมและดื้อรั้นมากและไม่ฟังสิ่งที่ฉันพูด ฉันควรบอกอะไรเขา PS: หากคุณมีเคล็ดลับในการแบ่งเขตในหนังสือแจ้งให้เราทราบ แก้ไข: …
200 java  learning  c++ 

7
คุณใช้โฟลตเมื่อใดและเมื่อไหร่ที่คุณจะใช้สองครั้ง
บ่อยครั้งในประสบการณ์การเขียนโปรแกรมของฉันฉันต้องตัดสินใจว่าฉันควรใช้ทศนิยมหรือสองเท่าสำหรับจำนวนจริงของฉัน บางครั้งฉันไปลอยบางครั้งฉันไปสำหรับสองครั้ง แต่จริง ๆ แล้วรู้สึกส่วนตัวมากกว่านี้ ถ้าฉันจะเผชิญหน้าเพื่อปกป้องการตัดสินใจของฉันฉันอาจจะไม่ให้เหตุผลที่ดี คุณใช้โฟลตเมื่อใดและเมื่อไหร่ที่คุณจะใช้สองเท่า คุณมักจะใช้สองครั้งต่อเมื่อมีข้อ จำกัด ของหน่วยความจำเกิดขึ้นและคุณจะต้องลอยตัว หรือคุณใช้งานแบบลอยตลอดเว้นแต่ความต้องการความแม่นยำต้องการให้คุณใช้สองเท่าหรือไม่ มีความแตกต่างอย่างมากเกี่ยวกับความซับซ้อนในการคำนวณของเลขคณิตพื้นฐานระหว่าง float และ double หรือไม่? ข้อดีและข้อเสียของการใช้ float หรือ double คืออะไร และคุณยังใช้คู่ยาวหรือไม่
194 c++  c  floating-point  numbers 

3
การกำหนดค่าเริ่มต้นเครื่องแบบ C ++ 11 เป็นการแทนที่ไวยากรณ์แบบเก่าหรือไม่
ฉันเข้าใจว่าการกำหนดค่าเริ่มต้นที่เหมือนกันของ C ++ 11 แก้ปัญหาความคลุมเครือทางไวยากรณ์ในภาษา แต่ในการนำเสนอของ Bjarne Stroustrup (โดยเฉพาะอย่างยิ่งในระหว่างการพูดคุย GoingNative 2012) ตัวอย่างของเขาใช้ไวยากรณ์นี้ทันทีทุกครั้งที่เขาสร้างวัตถุ ขอแนะนำให้ใช้การกำหนดค่าเริ่มต้นสม่ำเสมอในทุกกรณีหรือไม่ วิธีการทั่วไปควรเป็นคุณสมบัติใหม่นี้เท่าที่มีสไตล์การเขียนโปรแกรมและการใช้งานทั่วไป? มีเหตุผลอะไรบ้างที่จะไม่ใช้ โปรดทราบว่าในใจของฉันฉันคิดว่าการสร้างวัตถุเป็นหลักเป็นกรณีการใช้งานของฉัน แต่ถ้ามีสถานการณ์อื่นที่ต้องพิจารณาโปรดแจ้งให้เราทราบ
172 c++  c++11 

12
เมื่อใดจึงควรใช้ C ผ่าน C ++ และ C ++ เหนือ C
ฉันได้รับการแนะนำให้รู้จักกับวิทยาการคอมพิวเตอร์มานานกว่าหนึ่งปีแล้วและจากประสบการณ์ของฉันดูเหมือนว่าทั้ง C และ C ++ ถือว่าเป็นภาษาที่ "เร็วมาก" ในขณะที่คนอื่น ๆ เช่น Python และภาษาสคริปต์นั้นมักจะค่อนข้างช้ากว่า . แต่ฉันเคยเห็นหลาย ๆ กรณีที่โครงการซอฟต์แวร์หรือแม้แต่เล็ก ๆ จะแทรกไฟล์ที่มีจำนวน n ของไฟล์เหล่านั้นจะถูกเขียนใน C และไฟล์ m จำนวนหนึ่งจะถูกเขียนใน C ++ (ฉันยังสังเกตเห็นว่าไฟล์ C ++ มักจะมีส่วนหัวที่สอดคล้องกันในขณะที่ไฟล์ C ไม่มาก) แต่ประเด็นหลักของการสอบถามของฉันคือการรับความรู้สึกโดยทั่วไปของสัญชาตญาณเมื่อมันเหมาะสมที่จะใช้ C มากกว่า C ++ และเมื่อดีกว่าที่จะใช้ C ++ เหนือ C นอกเหนือจากข้อเท็จจริงที่ว่า (1) C ++ เป็นวัตถุเชิงในขณะที่ C ไม่ใช่และ (2) …
164 c++  c 

19
มีเหตุผลใดที่จะใช้ C ++ แทน C, Perl, Python และอื่น ๆ ? [ปิด]
ในฐานะนักพัฒนา Linux (ฝั่งเซิร์ฟเวอร์) ฉันไม่รู้ว่าที่ไหนและเพราะเหตุใดฉันจึงควรใช้ C ++ เมื่อฉันจะไปแสดงตัวเลือกแรกและสุดท้ายคือ C เมื่อ "ประสิทธิภาพ" ไม่ใช่ปัญหาหลักภาษาการเขียนโปรแกรมเช่น Perl และ Python จะเป็นตัวเลือกที่ดี เกือบทุกแอพพลิเคชั่นโอเพนซอร์ซที่ฉันรู้จักในพื้นที่นี้เขียนด้วยภาษา C, Perl, Python, Bash script, AWKหรือแม้แต่ PHP แต่ไม่มีใครใช้ C ++ ฉันไม่ได้พูดถึงเรื่องอื่น ๆ เช่น GUI หรือเว็บแอปพลิเคชันฉันแค่พูดถึง Linux, CLI และ daemons มีเหตุผลที่น่าพอใจในการใช้ C ++ หรือไม่?

11
ฉันควรหยุดใช้คำว่า C / C ++ หรือไม่
ฉันเข้าใจ C และ C ++ เป็นภาษาที่แตกต่างกัน แต่เมื่อฉันเรียนรู้ C ++ ฉันมักจะบอกเสมอว่าC เป็นชุดย่อยของ C ++หรือ C ++ คือ C พร้อมคลาส และนั่นเป็นเรื่องจริงจนกระทั่งการปรากฏตัวของ C ++ x0, C ++ 11 (หรือ C ++ ที่ทันสมัยโดยทั่วไป 11/14/17) อันที่จริง (โดยเฉพาะเมื่อทำงานกับระบบฝังตัว) มีโอกาสมากที่จะพบรหัสที่เขียนใน C ++ แต่มีชิ้นส่วนจำนวนมากที่เขียนด้วยภาษา C ล้วนๆ ที่นี่ฉันมีคำถามหลายข้อ: ฉันควรหยุดใช้คำว่า C / C ++ หรือไม่ หากคำตอบของ # 1 คือใช่ฉันจะเรียกโปรแกรมที่ใช้ผสม C …
140 c++  c  terminology  c++11 

15
ทำไมภาษาที่มีการจัดการหน่วยความจำเช่น Java, Javascript และ C # จึงยังคงรักษาคำหลัก `ใหม่ 'อยู่
newคำหลักในภาษาเช่น Java, JavaScript, และ C # สร้างตัวอย่างใหม่ของชั้นเรียน ดูเหมือนว่าไวยากรณ์นี้จะได้รับการสืบทอดมาจาก C ++ ซึ่งnewมีการใช้เฉพาะเพื่อจัดสรรอินสแตนซ์ใหม่ของคลาสบนฮีปและส่งกลับตัวชี้ไปยังอินสแตนซ์ใหม่ ใน C ++ นี่ไม่ใช่วิธีเดียวในการสร้างวัตถุ คุณยังสามารถสร้างวัตถุบนสแต็กโดยไม่ต้องใช้new- และในความเป็นจริงวิธีการสร้างวัตถุนี้เป็นเรื่องธรรมดามากใน C ++ ดังนั้นมาจากพื้นหลัง C ++ newคำสำคัญในภาษาเช่น Java, Javascript และ C # ดูเป็นธรรมชาติและชัดเจนสำหรับฉัน จากนั้นฉันก็เริ่มเรียนรู้ Python ซึ่งไม่มีnewคำหลัก ใน Python อินสแตนซ์ถูกสร้างโดยการเรียกนวกรรมิกเช่น: f = Foo() ในตอนแรกสิ่งนี้ดูจะยากสำหรับฉันจนกว่ามันจะเกิดขึ้นกับฉันว่า Python ไม่มีเหตุผลnewเพราะทุกอย่างเป็นวัตถุดังนั้นจึงไม่จำเป็นต้องแยกแยะระหว่างไวยากรณ์ตัวสร้างต่าง ๆ แต่แล้วฉันก็คิดว่า - จุดประสงค์newใน Java คืออะไร? ทำไมเราควรจะพูดว่าObject o = …

8
C ++ ทำอะไรได้ดีกว่า D
ฉันเพิ่งได้เรียนรู้Dและฉันเริ่มคุ้นเคยกับภาษา ฉันรู้ว่ามันให้อะไรฉันยังไม่รู้ว่าจะใช้ทุกอย่างอย่างไรและฉันก็ไม่รู้อะไรมากมายเกี่ยวกับ D สำนวนและอื่น ๆ แต่ฉันกำลังเรียนรู้ ฉันชอบ D. มันเป็นภาษาที่ดีมากในหลาย ๆ ด้านการอัพเดต C ขนาดใหญ่และทำได้ดีมาก ไม่มีคุณสมบัติใดที่ดูเหมือนว่า "ปิด" แต่จริงๆแล้วค่อนข้างดีที่คิดและออกแบบมาอย่างดี คุณมักจะได้ยินว่า D คือสิ่งที่ C ++ ควรเป็น (ฉันทิ้งคำถามว่าจริงหรือไม่สำหรับแต่ละคนและทุกคนในการตัดสินใจด้วยตนเองเพื่อหลีกเลี่ยงสงครามเปลวไฟที่ไม่จำเป็น) ฉันเคยได้ยินจากโปรแกรมเมอร์ C ++ หลายคนว่าพวกเขาสนุกกับ D มากกว่า C ++ ตัวเองในขณะที่ฉันรู้ว่า C ฉันไม่สามารถพูดได้ว่าฉันรู้ C ++ ฉันต้องการได้ยินจากคนที่รู้ทั้ง C ++ และ D หากพวกเขาคิดว่ามีบางสิ่งที่ C ++ ทำได้ดีกว่า D เป็นภาษา (หมายถึงไม่ใช่ปกติ "มีห้องสมุดบุคคลที่สามมากกว่า" หรือ …

16
ทำไมผู้คนถึงใช้ C ถ้ามันอันตรายมาก?
ฉันกำลังพิจารณาการเรียนรู้ C. แต่ทำไมคนใช้ C (หรือ C ++) ถ้ามันสามารถใช้ 'อันตราย'? โดยอันตรายฉันหมายถึงตัวชี้และสิ่งอื่นที่คล้ายคลึงกัน เช่นเดียวกับคำถาม Stack Overflow ทำไมฟังก์ชั่นที่ได้รับมีอันตรายมากจนไม่ควรใช้? . ทำไมโปรแกรมเมอร์ไม่เพียง แต่ใช้ Java หรือ Python หรือภาษาอื่นที่รวบรวมเช่น Visual Basic?
132 c++  c 

14
อัตโนมัติทำให้รหัส C ++ เข้าใจยากขึ้นหรือไม่
ผมเห็นการประชุมโดย Sutter สมุนไพรที่เขาสนับสนุนให้ทุก C ++ Programmer autoใช้ ฉันต้องอ่านรหัส C # เมื่อหลายปีก่อนที่varมีการใช้อย่างกว้างขวางและรหัสนั้นยากที่จะเข้าใจ - ทุกครั้งที่varมีการใช้ฉันต้องตรวจสอบประเภทการคืนของด้านขวา บางครั้งมากกว่าหนึ่งครั้งเพราะฉันลืมประเภทของตัวแปรหลังจากที่ในขณะ! ฉันรู้ว่าคอมไพเลอร์รู้ชนิดและไม่ต้องเขียน แต่เป็นที่ยอมรับกันอย่างกว้างขวางว่าเราควรเขียนโค้ดสำหรับโปรแกรมเมอร์ไม่ใช่สำหรับคอมไพเลอร์ ฉันก็รู้ว่าเขียนง่ายกว่า: auto x = GetX(); กว่า: someWeirdTemplate<someOtherVeryLongNameType, ...>::someOtherLongType x = GetX(); แต่จะเขียนเพียงครั้งเดียวและGetX()มีการตรวจสอบประเภทส่งคืนหลาย ๆ ครั้งเพื่อทำความเข้าใจว่าxมีประเภทใด นี่ทำให้ฉันสงสัย - autoทำให้รหัส C ++ ยากที่จะเข้าใจหรือไม่
122 c++  c++11 

11
การสำรองการอ้างสิทธิ์ที่ C ++ สามารถทำได้เร็วกว่า JVM หรือ CLR ด้วย JIT คืออะไร [ปิด]
ชุดรูปแบบที่เกิดขึ้นซ้ำ ๆ ใน SE ที่ฉันสังเกตเห็นในคำถามหลายข้อเป็นข้อโต้แย้งอย่างต่อเนื่องว่า C ++ นั้นเร็วกว่าและ / หรือมีประสิทธิภาพมากกว่าภาษาระดับสูงกว่าอย่าง Java ข้อโต้แย้งคือ JVM หรือ CLR ที่ทันสมัยสามารถมีประสิทธิภาพได้เช่นเดียวกับ JIT และอื่น ๆ สำหรับงานที่เพิ่มมากขึ้นและ C ++ นั้นมีประสิทธิภาพมากขึ้นถ้าคุณรู้ว่าคุณกำลังทำอะไรและทำไมการทำสิ่งต่าง ๆ จะเพิ่มประสิทธิภาพการทำบุญ นั่นชัดเจนและสมเหตุสมผลดี ฉันต้องการทราบคำอธิบายพื้นฐาน (หากมีสิ่งนั้น ... ) ว่าทำไมและอย่างไรงานบางอย่างจะเร็วขึ้นใน C ++ กว่า JVM หรือ CLR? มันเป็นเพราะ C ++ ถูกคอมไพล์เป็นรหัสเครื่องในขณะที่ JVM หรือ CLR ยังคงมีโอเวอร์เฮดของการประมวลผลของการคอมไพล์ JIT ณ รันไทม์? เมื่อฉันพยายามที่จะศึกษาหัวข้อทั้งหมดที่ฉันพบคือข้อโต้แย้งเดียวกับที่ฉันระบุไว้ข้างต้นโดยไม่มีข้อมูลรายละเอียดใด ๆ …
119 java  c++  performance  jit 

13
เราควรหลีกเลี่ยงคุณสมบัติภาษาที่ C ++ มี แต่ Java ไม่ได้หรือไม่
สมมติว่าฉันถูก จำกัด ให้ใช้ C ++ โดยสภาพแวดล้อมในโครงการ เป็นการดีหรือไม่ที่จะป้องกันการใช้คุณสมบัติภาษาบางอย่างที่ C ++ มี แต่ Java ไม่ได้มี (เช่น: การสืบทอดหลายตัว ฉันคิดว่าเหตุผลคือ: เนื่องจาก Java เป็นรุ่นใหม่กว่า C ++ หาก Java ไม่มีคุณสมบัติที่ C ++ มีหมายความว่าคุณลักษณะนั้นไม่ดีดังนั้นเราจึงควรหลีกเลี่ยงการใช้งาน รหัส C ++ พร้อมคุณสมบัติเฉพาะ C ++ (เช่น: ฟังก์ชั่นเพื่อนหลายมรดก) สามารถดูแลรักษาหรือตรวจสอบโดยโปรแกรมเมอร์ C ++ เท่านั้น แต่ถ้าเราเขียน C ++ เช่น Java (โดยไม่มีคุณสมบัติเฉพาะภาษา C ++) โค้ดนั้นสามารถรักษาหรือตรวจสอบได้โดยทั้งสอง โปรแกรมเมอร์ C …
110 java  c++  code-quality 

4
คำสั่งห้ามของ `long 'สมเหตุสมผลหรือไม่?
ในปัจจุบันข้ามแพลตฟอร์ม C ++ (หรือ C) โลกเรามี : Data model | short | int | long | long long | pointers/size_t | Sample operating systems ... LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, …

10
มันโอเคที่จะใช้การเขียนโปรแกรมเมตาแม้ว่าเพื่อนร่วมงานของฉันจะไม่เข้าใจหรือไม่?
ฉันใช้การเขียนโปรแกรมเมตาจำนวนมากเพื่อหลีกเลี่ยงงานซ้ำ ๆ และสร้าง abstractions ที่ปลอดภัยต่อการใช้งาน ฉันเพิ่งย้ายไปทำงานใหม่ที่ฉันทำงานในทีมที่ใหญ่กว่าและสิ่งนี้ทำให้เพื่อนร่วมงานของฉันกังวลเพราะพวกเขาไม่เข้าใจ ฉันพยายามยกระดับความสามารถของภาษาอย่างเต็มที่ แต่เพื่อนร่วมงานของฉันบางคน (ไม่ใช่ทั้งหมด) เข้าใจว่าเป็นความเสี่ยง (บางคนยินดีต้อนรับวิธีการ) ฉันยอมรับว่ามันเป็นปัญหาในการเขียนโค้ดที่ไม่มีใครในทีมสามารถเข้าใจได้ ในทางกลับกันเราเป็นนักพัฒนา C ++ มืออาชีพและฉันคิดว่าเราควรจะมีมาตรฐานที่สูงกว่าการเขียน C ด้วยคลาส คำถามของฉันคือใครถูกต้องฉันควรทำอย่างไร การชี้แจง: การ พยายามยกระดับศักยภาพของภาษาอย่างเต็มที่ไม่ได้หมายความว่าฉันจะใช้ TMP ในทุกปัญหา C ++ เป็นกล่องเครื่องมือและสำหรับฉันความสามารถ C ++ นั้นเกี่ยวกับความสามารถในการใช้เครื่องมือทั้งหมดจากกล่องและเกี่ยวกับการเลือกเครื่องมือที่เหมาะสมสำหรับงานเฉพาะ

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