Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. ตัวแปรท้องถิ่น (local) และตัวแปรกลาง (global) ใน C++ คืออะไร?

    ขอบเขต (scope) คือบริเวณของโปรแกรม และคร่าวๆ ไปมี 3 สถานที่ที่ตัวแปรสามารถประกาศได้ - ภายในฟังก์ชันหรือบล็อก เรียกว่า ตัวแปรท้องถิ่น (local variables) ในการกำหนดพารามิเตอร์ของฟังก์ชัน เรียกว่า พารามิเตอร์ทางการ (formal parameters) นอกฟังก์ชันทั้งหมด เรียกว่า ตัวแปรกลาง (global variables) ตัวแปรท้อ

  2. ความแตกต่างระหว่าง static, auto, global และ local variable ใน C++

    มี 2 แนวคิดที่แยกจากกันที่นี่ - ขอบเขต (scope) ซึ่งกำหนดว่าชื่อสามารถเข้าถึงได้ที่ไหน - global และ local ระยะเวลาการจัดเก็บ (storage duration) ซึ่งกำหนดว่าตัวแปรถูกสร้างและทำลายเมื่อไหร่ - static และ auto ขอบเขต (Scope) ตัวแปรท้องถิ่นสามารถใช้ได้เฉพาะคำสั่งที่อยู่ภายในฟังก์ชันหรือบล็อกโค้ดนั้น ตัว

  3. ขอบเขตของตัวแปรใน C++

    ขอบเขต (scope) คือบริเวณของโปรแกรม และคร่าวๆ ไปมี 3 สถานที่ที่ตัวแปรสามารถประกาศได้ - ภายในฟังก์ชันหรือบล็อก เรียกว่า ตัวแปรท้องถิ่น (local variables) ในการกำหนดพารามิเตอร์ของฟังก์ชัน เรียกว่า พารามิเตอร์ทางการ (formal parameters) นอกฟังก์ชันทั้งหมด เรียกว่า ตัวแปรกลาง (global variables) ตัวแปรท้อ

  4. ตัวแปร ชนิดข้อมูล และขอบเขต (Scope) ใน C++

    ตัวแปรแต่ละตัวใน C++ มีชนิดเฉพาะ ซึ่งกำหนดขนาดและการจัดวางหน่วยความจำของตัวแปร; ช่วงของค่าที่สามารถจัดเก็บได้ในหน่วยความจำนั้น; และชุดของออปอเรชันที่สามารถนำไปใช้กับตัวแปรได้ เราประกาศตัวแปรโดยใช้สัญกรณ์ - type variableName; ชนิด (type) อาจเป็น primitive (int, bool, float, char, ฯลฯ), enumerated typ

  5. คุณสมบัติ C++11 ที่รองรับโดย Intel

    คุณสมบัติ C++11 ที่รองรับโดย Intel มีให้ในคู่มือทางการในเอกสารของพวกเขา คุณสามารถตรวจสอบคุณสมบัติเหล่านี้ได้ที่ Intel C++ Compiler Documentation

  6. หนังสือและคู่มือ C++ ที่ดีที่สุดมีอะไรบ้าง?

    มีแหล่งข้อมูลมากมายบนเว็บที่ช่วยให้คุณเรียน C++ ได้ ผมพยายามรวบรวมรายการแหล่งข้อมูลที่ดีที่สุดบางส่วนไว้ให้คุณ - Tutorialspoint C++ - สถานที่ยอดเยี่ยมสำหรับเรียน C++ ครอบคลุมเกือบทุกหัวข้อบนพื้นฐานและระดับกลางอย่างลึกซึ้ง แหล่งข้อมูลที่ดีโดยรวม A Tour of C++ (Bjarne Stroustrup) - หนังสือที่ให้ภาพรว

  7. บทเรียนออนไลน์ C++ ที่ดีที่สุดมีอะไรบ้าง?

    มีแหล่งข้อมูลมากมายบนเว็บที่ช่วยให้คุณเรียน C++ ได้ ผมพยายามรวบรวมรายการแหล่งข้อมูลที่ดีที่สุดบางส่วนไว้ให้คุณ - Tutorialspoint C++ - สถานที่ยอดเยี่ยมสำหรับเรียน C++ ครอบคลุมเกือบทุกหัวข้อบนพื้นฐานและระดับกลางอย่างลึกซึ้ง แหล่งข้อมูลที่ดีโดยรวม A Tour of C++ (Bjarne Stroustrup) - หนังสือที่ให้ภาพรว

  8. Undefined reference / Unresolved external symbol errors ใน C++ คืออะไร?

    เช่นชื่อที่บ่งบอก สัญลักษณ์ (symbol) ที่คุณประกาศ (declare) ไม่ได้ถูกกำหนด (define) โดยคุณ ข้อผิดพลาดนี้อาจเกิดจากหลายกรณี มาดู 3 กรณีหลัก - คุณลืมกำหนดชื่อที่ประกาศ เช่น คุณประกาศฟังก์ชันในไฟล์หนึ่งและใช้งานที่อื่น แต่คุณไม่ได้ให้การนิยาม (definition) โค้ด - #include <iostream> void foo();

  9. สัญลักษณ์ '&' ใน C++ มีประโยชน์อย่างไร?

    สัญลักษณ์ & ใช้เป็นออปอเรเตอร์ใน C++ ใช้ใน 2 ที่แตกต่างกัน คือ เป็นออปอเรเตอร์บิตวายส์ AND (bitwise AND) และออปอเรเตอร์ที่อยู่ของตัวชี้ (address-of operator) Bitwise AND ออปอเรเตอร์บิตวายส์ AND (&) เปรียบเทียบแต่ละบิตของออเปอรันด์แรกกับบิตที่ตรงกันของออเปอรันด์ที่สอง หากทั้งสองบิตเป็น 1 บิตผ

  10. เริ่มต้นการเขียนโปรแกรมเชิงวัตถุ (OOP) ใน C++ อย่างไร?

    การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming - OOP) เป็นพาราดิมการเขียนโปรแกรมที่อิงตามแนวคิดของ วัตถุ (objects) ซึ่งอาจประกอบด้วยข้อมูลในรูปของแอตทริบิวต์ (attributes) และคำสั่งในการทำสิ่งต่างๆ ในรูปของเมธอด (methods) ตัวอย่างเช่น บุคคลหนึ่งเป็นวัตถุที่มีคุณสมบัติบางอย่าง เช่น สูง, เพศ, อา

  11. ทำไม C++ Templates ถึงต้อง реализоватьในไฟล์ Header เท่านั้น?

    เมื่อคุณสร้างอินสแตนซ์ (instantiate) เทมเพลตใน C++ คอมไพเลอร์จะสร้างคลาสใหม่ คลาสนี้จะมีทุกตำแหน่งที่คุณวางอาร์กิวเมนต์เทมเพลต ถูกแทนที่ด้วยอาร์กิวเมนต์จริงที่คุณส่งเมื่อใช้งาน ตัวอย่างเช่น - template<typename T> class MyClass { T foo; T myMethod(T arg1, T arg2) { // Impl }

  12. กฎของสาม (Rule of Three) ใน C++ คืออะไร?

    กฎของสาม (Rule of Three) เป็นกฎทั่วไป (rule of thumb) ในการใช้ C++ เป็นแนวทางปฏิบัติที่ดี ซึ่งระบุว่า หากคลาสของคุณต้องการกำหนดอย่างชัดเจน (explicitly define) ฟังก์ชันใดฟังก์ชันหนึ่งต่อไปนี้: Copy Constructor Assignment Operator Destructor แล้วมันน่าจะต้องการทั้งสามฟังก์ชัน ทำไมถึงเป็นเช่นนั้น? เพ

  13. ทำไมการใช้ iostream::eof ในเงื่อนไขลูปจึงถือเป็นวิธีผิด?

    เพียงแค่ยังไม่ถึง EOF ไม่ได้หมายความว่าการอ่านครั้งต่อไปจะสำเร็จ พิจารณาไฟล์ที่คุณอ่านโดยใช้ไฟล์สตรีม (file streams) ใน C++ เมื่อเขียนลูปเพื่ออ่านไฟล์ หากคุณตรวจสอบ stream.eof() คุณก็คือกำลังตรวจสอบว่าไฟล์ถึง EOF แล้วหรือยัง ดังนั้นโค้ดจะเขียนแบบนี้ - ตัวอย่างที่ไม่แนะนำ #include <iostream> #i

  14. ทำไมการใช้ 'using namespace std' จึงถือเป็นแนวทางไม่ดี?

    C++ มีไลบรารีมาตรฐานที่ประกอบด้วยฟังก์ชันทั่วไปที่คุณใช้ในการสร้างแอปพลิเคชัน เช่น คอนเทนเนอร์ (containers), อัลกอริทึม (algorithms) เป็นต้น หากชื่อที่ใช้โดยสิ่งเหล่านี้ถูกปล่อยให้อยู่ในขอบเขตกลาง (global scope) อย่างไรก็ตาม เช่น หากพวกเขากำหนดคลาส queue อย่างกลาง คุณจะไม่มีโอกาสใช้ชื่อเดียวกันอีกโด

  15. หน่วยความจำของตัวแปรท้องถิ่นสามารถเข้าถึงนอกขอบเขตได้ใน C/C++ หรือไม่?

    มาดูตัวอย่างที่อาจทำให้คุณสามารถเข้าถึงหน่วยความจำของตัวแปรท้องถิ่น (local variable) นอกขอบเขตของมันได้ ตัวอย่าง #include <iostream> int* foo() { int x = 3; return &x; } int main() { int* address = foo(); cout << *address; *address = 12; cout << *address

  16. กฎการใช้ underscore ใน C++ Identifier

    จากเอกสาร MSDN และมาตรฐาน C++: ห้ามใช้ (Reserved for implementation) Double underscore ใดๆ: __foo, __FOO, foo__bar (ทุก scope) Leading underscore + ตัวใหญ่: _FOO, _Bar (ทุก scope) Leading underscore + ตัวเล็ก: _foo, _bar (เฉพาะ global/file scope) ควรหลีกเลี่ยง (Reserved prefixes/suffixes) Prefix

  17. Object Slicing ใน C++ (และ Java) คืออะไร

    Object Slicing เกิดเมื่อ assign object ของ derived class ให้กับ instance ของ base class (by value) สูญเสีย members/methods ของ derived class ตัวอย่าง class Foo { int a; }; class Bar : public Foo { int b; }; // Bar มี a และ b Bar bar; Foo foo = bar; // Object slicing! foo มีแค่ a, b ถูก slice ทิ้

  18. วิธี iterate คำใน C/C++ String ที่ elegant ที่สุด

    ไม่มี วิธีเดียวที่ elegant ที่สุด ขึ้นอยู่กับเป้าหมาย (readability vs performance) นี่คือ 2 วิธีหลัก: วิธีที่ 1: stringstream (อ่านคั่นด้วย whitespace) #include <vector> #include <string> #include <sstream> using namespace std; int main() { string str(Hello from the dark side

  19. วิธี Profile C++ Code บน Linux

    1. Valgrind + Callgrind (ยอดนิยม) $ g++ -o hello hello.cpp $ valgrind --tool=callgrind ./hello # ได้ไฟล์ callgrind.out.x # อ่านด้วย kcachegrind (GUI) Valgrind: memory debugging, leak detection, profiling 2. gprof (built-in GCC) $ g++ -o hello hello.cpp -g -pg $ ./hello $ gprof hello gmon.out > a

  20. Copy-and-swap Idiom ใน C++ คืออะไร

    Copy-and-swap = เทคนิค implement assignment operator (operator=) ที่ปลอดภัยและ exception-safe Assignment มี 2 ขั้นตอน: (1) ทำลายสถานะเก่า (destructor) (2) สร้างสถานะใหม่ (copy constructor) การ overload operator= ตรงๆ ยากที่จะทำให้ exception-safe หลักการ Copy-and-swap ใช้ copy constructor สร้าง loc

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:11/301  20-คอมพิวเตอร์/Page Goto:1 5 6 7 8 9 10 11 12 13 14 15 16 17