หน้าแรก
หน้าแรก
ค่าส่งคืนสำหรับ main ใช้เพื่อระบุว่าโปรแกรมออกจากระบบอย่างไร หากการทำงานของโปรแกรมเป็นปกติ ระบบจะใช้ค่าส่งคืน 0 การสิ้นสุดอย่างผิดปกติ (ข้อผิดพลาด อินพุตที่ไม่ถูกต้อง ข้อผิดพลาดในการแบ่งส่วน ฯลฯ) มักจะสิ้นสุดลงด้วยการคืนค่าที่ไม่เป็นศูนย์ ไม่มีมาตรฐานสำหรับการตีความรหัสที่ไม่ใช่ศูนย์ คุณสามารถกำหนดร
พฤติกรรมที่ไม่ได้กำหนดเป็นเพียงพฤติกรรมที่ไม่ได้กำหนดโดยข้อกำหนด C++ ตัวอย่างเช่น หากคุณมีการดำเนินการเพิ่ม/ลดค่าเดียวหลายรายการในนิพจน์ เช่น i++ + ++i การดำเนินการดังกล่าวจะส่งผลให้เกิดการทำงานที่ไม่ได้กำหนดไว้ นี่เป็นเพียงเพราะข้อเท็จจริงที่ว่าโครงสร้างภาษาบางภาษานั้นถูกต้องตามหลักไวยากรณ์ แต่คุณไ
ใน C ++ การประมวลผลอาร์เรย์ที่เรียงลำดับได้เร็วกว่าอาร์เรย์ที่ไม่เรียงลำดับเนื่องจากการทำนายสาขา ในสถาปัตยกรรมคอมพิวเตอร์ การคาดคะเนสาขาจะกำหนดว่าสาขาตามเงื่อนไข (ข้าม) ในโฟลว์คำสั่งของโปรแกรมมีแนวโน้มที่จะเกิดขึ้นหรือไม่ มาดูตัวอย่างกัน − if(arr[i] > 50) { Do some operation B } else
อาร์เรย์คือชุดขององค์ประกอบประเภทเดียวกันที่วางอยู่ในตำแหน่งหน่วยความจำที่อยู่ติดกันซึ่งสามารถอ้างอิงทีละรายการโดยการเพิ่มดัชนีไปยังตัวระบุที่ไม่ซ้ำกัน หากต้องการใช้อาร์เรย์ใน C++ คุณจะต้องประกาศอาร์เรย์ก่อน เช่น int arr[10]; เป็นการประกาศอาร์เรย์ของชนิด int ขนาด 10 ซึ่งสามารถเก็บ 10 จำนวนเต็มในหน่
ข้อมูลอ้างอิง เมื่อมีการประกาศตัวแปรเป็นข้อมูลอ้างอิง ตัวแปรนั้นจะกลายเป็นชื่อทางเลือกสำหรับตัวแปรที่มีอยู่ ไวยากรณ์ Type &newname = existing name; การเริ่มต้น Type &pointer; pointer = variable name; ตัวชี้ พอยน์เตอร์ใช้สำหรับเก็บแอดเดรสของตัวแปร ไวยากรณ์ Type *pointer; การเริ่มต้น Type *
Copy elision เป็นการปรับให้เหมาะสมที่คอมไพเลอร์ส่วนใหญ่นำไปใช้ เพื่อป้องกันสำเนาพิเศษ (อาจมีราคาแพง) ในบางสถานการณ์ ดังนั้นหากคุณมีโค้ดที่สร้างอ็อบเจกต์ที่ไม่ได้ใช้หรือไม่มีผลข้างเคียง ตัวอย่าง struct MyStruct { MyStruct() {} MyStruct(const MyStruct&) { &
ความแตกต่างระหว่าง sizeof สำหรับ struct และผลรวมของ sizeof ของสมาชิกแต่ละตัวของ struct นั้นเกิดจากการที่ byte padding และจัดตำแหน่ง ข้อมูลทุกประเภทใน C/C++ มีข้อกำหนดการจัดตำแหน่ง โปรเซสเซอร์จะมีความยาวของคำในการประมวลผลของสถาปัตยกรรม สำหรับเครื่อง 32 บิต ขนาดคำในการประมวลผลจะเป็น 4 ไบต์หรือ 32 บิต
อาร์เรย์และพอยน์เตอร์ทำงานค่อนข้างคล้ายกันใน C/C++ แต่มีความแตกต่างที่ลึกซึ้งบางอย่าง ตัวอย่างเช่น ตัวดำเนินการ sizeof ทำงานแตกต่างกันมากในทั้งสอง เมื่อคุณแปลงอาร์เรย์เป็นตัวชี้ ตัวอย่าง #include<iostream> int main() { const int a[] = { 2, 3, 5, 7, 11 }; const int* p
Forward declaration ช่วยให้โค้ดหลังการประกาศทราบว่ามีคลาสชื่อ Person สิ่งนี้ทำให้คอมไพเลอร์พึงพอใจเมื่อเห็นชื่อเหล่านี้ใช้ ต่อมาตัวเชื่อมโยงจะพบคำจำกัดความของคลาส ตัวอย่าง Class Person; void myFunc(Person p1) { // ... } Class Person { // Class definition here }; ดังนั้น
ตัวชี้อัจฉริยะคือคลาสที่ล้อมตัวชี้ C++ แบบ ดิบ (หรือ เปลือย) มันถูกใช้เพื่อจัดการทรัพยากรที่ตัวชี้ชี้ไป ตัวอย่างเช่น หากการอ้างอิงถึงตำแหน่งหน่วยความจำนั้นหายไป มันทำหน้าที่เหมือนคนเก็บขยะ มีตัวชี้อัจฉริยะหลายประเภท คุณควรใช้ตัวชี้อัจฉริยะเกือบทุกครั้ง เนื่องจากปัญหาหลักของการใช้พอยน์เตอร์คือการ
คุณสามารถค้นหาเอกสารมาตรฐาน C ปัจจุบันได้ที่เว็บสโตร์ ANSI https://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+9899-2012 คุณสามารถค้นหาเอกสารมาตรฐาน C++ ปัจจุบันได้จากเว็บไซต์ ISO C++ สำหรับการซื้อ – https://www.iso.org/standard/68564.html แบบร่างการทำงานของมาตรฐาน ISO C++ มีอยู่ใน
const_cast สามารถใช้เพื่อลบหรือเพิ่ม const ให้กับตัวแปร สิ่งนี้มีประโยชน์หากจำเป็นต้องเพิ่ม/ลบ constness จากตัวแปร static_cast ใช้สำหรับการแปลงประเภทปกติ/ธรรมดา นี่ยังเป็นนักแสดงที่รับผิดชอบสำหรับการบีบบังคับแบบโดยปริยายและยังสามารถเรียกได้อย่างชัดเจน คุณควรใช้ในกรณีเช่นแปลง float เป็น int, char เป็
รูปแบบการออกแบบซิงเกิลตันคือหลักการออกแบบซอฟต์แวร์ที่ใช้ในการจำกัดการสร้างอินสแตนซ์ของคลาสให้เป็นวัตถุเดียว สิ่งนี้มีประโยชน์เมื่อจำเป็นต้องใช้วัตถุเพียงชิ้นเดียวเพื่อประสานงานการดำเนินการทั่วทั้งระบบ ตัวอย่างเช่น หากคุณกำลังใช้ตัวบันทึก ที่เขียนบันทึกไปยังไฟล์ คุณสามารถใช้คลาสซิงเกิลตันเพื่อสร้างตั
คุณไม่สามารถเข้าถึงตัวแปรในเครื่องได้เมื่ออยู่นอกขอบเขต นี่คือสิ่งที่หมายถึงตัวแปรท้องถิ่น ถึงแม้ว่า ให้เราดูตัวอย่างที่คุณอาจสามารถเข้าถึงหน่วยความจำของตัวแปรภายในเครื่องนอกขอบเขต ตัวอย่าง #include<iostream> int* foo() { int x = 3; return &x; } int main() {  
การเปรียบเทียบโฟลตและตัวแปรคู่ขึ้นอยู่กับเป้าหมายสุดท้ายของคุณ หากคุณต้องการฟังก์ชันที่รันได้โดยไม่มีรายละเอียดมากเกินไป และจะไม่มีปัญหาในการคำนวณที่ไม่ถูกต้อง คุณสามารถใช้ฟังก์ชันต่อไปนี้ - ตัวอย่าง #include<iostream> using namespace std; // Define the error that you can tolerate #define EPS
คุณสามารถตั้งค่าล้างและสลับบิตได้โดยใช้ตัวดำเนินการระดับบิตใน C, C++, Python และภาษาโปรแกรมอื่นๆ ทั้งหมดที่สนับสนุนการดำเนินการเหล่านี้ คุณต้องใช้ตัวดำเนินการ bitshift เพื่อให้บิตถูกที่ ตั้งค่าเล็กน้อย ในการตั้งค่าบิต เราจะต้องใช้ตัวดำเนินการระดับบิต OR - ตัวอย่าง #include n; ผม |=(1 <
คุณควรใช้ไลบรารี่เพื่อแยกวิเคราะห์ไฟล์ CSV ใน C++ เนื่องจากมีหลายกรณีที่คุณอาจพลาดหากคุณอ่านไฟล์ด้วยตัวเอง ไลบรารีบูสต์สำหรับ C++ มีชุดเครื่องมือที่ดีมากสำหรับการอ่านไฟล์ CSV ตัวอย่างเช่น ตัวอย่าง #include<iostream> vector<string> parseCSVLine(string line){ using namespace b
วิธีแรกคือการใช้สตริงสตรีมเพื่ออ่านคำที่คั่นด้วยการเว้นวรรค สิ่งนี้มีข้อ จำกัด เล็กน้อย แต่ทำงานได้ดีหากคุณให้การตรวจสอบที่เหมาะสม ตัวอย่าง #include <vector> #include <string> #include <sstream> using namespace std; int main() { string str("Hello from the dark
สัญลักษณ์ด้านบนหมายถึงสิ่งต่อไปนี้ − int* - Pointer to int. This one is pretty obvious. int const * - Pointer to const int. int * const - Const pointer to int int const * const - Const pointer to const int โปรดทราบด้วยว่า − const int * And int const * are the same. const int * const And int const *
Scott Meyers ในภาษา C++ ที่มีประสิทธิภาพพูดว่า - หากคลาสมีฟังก์ชันเสมือน คลาสนั้นควรมีตัวทำลายเสมือน และคลาสนั้นที่ไม่ได้ออกแบบมาให้เป็นคลาสพื้นฐานหรือไม่ได้ออกแบบมาให้ใช้แบบพหุสัณฐานก็ไม่ควรประกาศตัวทำลายเสมือน ดังนั้นคุณควรประกาศ destructors เสมือนในคลาสฐาน polymorphic นี่เป็นเพราะถ้าคุณสร้างวัต