หน้าแรก
หน้าแรก
สมาชิกและคลาสฐานของ struct เป็นแบบสาธารณะโดยดีฟอลต์ ในขณะที่ในคลาส ค่าเริ่มต้นจะเป็นไพรเวต โครงสร้างและคลาสนั้นเทียบเท่ากับการใช้งาน อย่างไรก็ตามมีการใช้ในสถานที่ต่าง ๆ เนื่องจากความหมาย โครงสร้างเป็นเหมือนโครงสร้างข้อมูลที่ใช้เพื่อแสดงข้อมูล ในทางกลับกัน class เป็นโครงสร้างแบบเอียงมากกว่า มันเลียน
C++ ไม่อนุญาตให้ส่งผ่านอาร์เรย์ทั้งหมดเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน อย่างไรก็ตาม คุณสามารถส่งตัวชี้ไปยังอาร์เรย์ได้โดยการระบุชื่ออาร์เรย์โดยไม่มีดัชนี หากคุณต้องการส่งอาร์เรย์มิติเดียวเป็นอาร์กิวเมนต์ในฟังก์ชัน คุณจะต้องประกาศพารามิเตอร์อย่างเป็นทางการของฟังก์ชันด้วยวิธีใดวิธีหนึ่งจากสามวิธีต่อไปนี
ต่อไปนี้เป็นสาเหตุที่พบบ่อยที่สุดของการทำงานที่ไม่ได้กำหนดในการเขียนโปรแกรม C++ โปรดทราบว่าสิ่งเหล่านี้ระบุไว้ในมาตรฐานเพื่อนำไปสู่การทำงานที่ไม่ได้กำหนดไว้ และควรหลีกเลี่ยงค่าใช้จ่ายทั้งหมดเมื่อเขียนโปรแกรม โอเวอร์โฟลว์จำนวนเต็มที่มีเครื่องหมาย โดยอ้างอิงจากตัวชี้ NULL ตัวชี้ที่ส่งคืนโดยการจัดสรร
C++ ไม่อนุญาตให้ส่งผ่านอาร์เรย์ทั้งหมดเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน อย่างไรก็ตาม คุณสามารถส่งตัวชี้ไปยังอาร์เรย์ได้โดยการระบุชื่ออาร์เรย์โดยไม่มีดัชนี มีสามวิธีในการส่งอาร์เรย์ 2D ไปยังฟังก์ชัน - ระบุขนาดคอลัมน์ของอาร์เรย์ 2 มิติ void processArr(int a[][10]) { // Do something } ส่งอาร์
static_cast − ใช้สำหรับการแปลงประเภทปกติ/ธรรมดา นี่ยังเป็นนักแสดงที่รับผิดชอบสำหรับการบีบบังคับแบบโดยปริยายและยังสามารถเรียกได้อย่างชัดเจน คุณควรใช้ในกรณีเช่นแปลง float เป็น int, char เป็น int เป็นต้น ไดนามิก_คาสท์ − นักแสดงนี้ใช้สำหรับจัดการกับความหลากหลาย คุณจำเป็นต้องใช้เมื่อคุณส่งไปยังคลาสที่ได
Forward declaration ช่วยให้โค้ดหลังการประกาศทราบว่ามีคลาสชื่อ Person สิ่งนี้ทำให้คอมไพเลอร์พึงพอใจเมื่อเห็นชื่อเหล่านี้ใช้ ต่อมาลิงเกอร์จะพบคำจำกัดความของคลาส ตัวอย่าง Class Person; void myFunc(Person p1) { // ... } Class Person { // Class definition here }; ดังนั้นในกรณ
เราควรหลีกเลี่ยงการใช้ตัวแปรร่วมในภาษาใดๆ ไม่ใช่แค่ C++ เนื่องจากตัวแปรเหล่านี้สร้างมลพิษให้กับเนมสเปซส่วนกลาง อาจทำให้เกิดข้อบกพร่องที่น่ารังเกียจในโปรเจ็กต์ขนาดใหญ่ เนื่องจากสามารถเข้าถึงได้จากไฟล์ใดๆ และด้วยเหตุนี้จึงสามารถแก้ไขได้จากทุกที่ นี่คือสาเหตุบางประการที่ถือว่าตัวแปรส่วนกลางไม่ดี - ต
ใน C ++ ไม่มีความแตกต่างระหว่าง struct และ typedef struct เพราะใน C++ การประกาศ struct/union/enum/class ทั้งหมดทำเหมือนเป็น typedef โดยปริยาย ed ตราบใดที่ชื่อไม่ได้ถูกซ่อนโดยการประกาศอื่นที่มีชื่อเดียวกัน แม้ว่าจะมีความแตกต่างเล็กน้อยที่ไม่สามารถประกาศ typedefs ได้ ดังนั้นสำหรับตัวเลือก typedef คุณต
คุณสามารถใช้ฟังก์ชัน popen และ pclose เพื่อไพพ์เข้าและออกจากกระบวนการ ฟังก์ชัน popen() จะเปิดกระบวนการโดยการสร้างไพพ์ การฟอร์ก และเรียกใช้เชลล์ เราสามารถใช้บัฟเฟอร์เพื่ออ่านเนื้อหาของ stdout และต่อท้ายสตริงผลลัพธ์และส่งคืนสตริงนี้เมื่อออกจากกระบวนการ ตัวอย่าง #include <iostream> #include <s
คุณสามารถจัดเรียงเวกเตอร์ของวัตถุที่กำหนดเองได้โดยใช้ฟังก์ชัน C++ STL std::sort ฟังก์ชัน sort มีรูปแบบที่โอเวอร์โหลดซึ่งใช้เป็นอาร์กิวเมนต์ก่อน ตัวสุดท้าย ตัวเปรียบเทียบ ตัวแรกและตัวสุดท้ายเป็นตัววนซ้ำองค์ประกอบแรกและสุดท้ายของคอนเทนเนอร์ ตัวเปรียบเทียบเป็นฟังก์ชันเพรดิเคตที่สามารถใช้เพื่อบอกวิธีการ
พฤติกรรมที่ไม่ได้กำหนดเป็นวิธีการให้อิสระแก่ผู้ดำเนินการ (เช่น คอมไพเลอร์หรือระบบปฏิบัติการ) และให้คอมพิวเตอร์ทำสิ่งที่ ต้องการ พูดอีกนัยหนึ่งคือไม่สนใจผลที่ตามมา กรณีที่ความผิดพลาดในการแบ่งส่วนเกิดขึ้นเกิดขึ้นชั่วคราว สิ่งเหล่านี้จะไม่ส่งผลให้เกิดข้อผิดพลาดในการแบ่งส่วนเสมอไป แต่ยังสามารถทำงานได้อ
\n แสดงผลการขึ้นบรรทัดใหม่ (ในการแสดงเฉพาะแพลตฟอร์มที่เหมาะสม ดังนั้นจึงสร้าง \r\n บน Windows) แต่ std::endl ทำแบบเดียวกันและล้างสตรีม โดยปกติ คุณไม่จำเป็นต้องล้างสตรีมในทันทีและจะทำให้คุณเสียประสิทธิภาพ ดังนั้นโดยส่วนใหญ่ ไม่มีเหตุผลที่จะใช้ std::endl เมื่อคุณต้องการล้างสตรีมด้วยตนเองเนื่องจากคุณค
คุณสามารถใช้ฟังก์ชัน itoa จาก C เพื่อแปลง int เป็นสตริงได้ ตัวอย่าง #include<iostream> int main() { int a = 10; char *intStr = itoa(a); string str = string(intStr); cout << str; } ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์ - 10 สิ่งนี้จะแปลงจำนวนเต
คีย์เวิร์ดที่ชัดเจนใน C++ ใช้เพื่อทำเครื่องหมายคอนสตรัคเตอร์เพื่อไม่ให้แปลงประเภทโดยปริยาย ตัวอย่างเช่น หากคุณมีคลาส Foo − class Foo { public: Foo(int n); // allocates n bytes to the Foo object Foo(const char *p); // initialize object with char *p }; ถ้าได้ลอง Foo mystri
การเรียกใช้ฟังก์ชันเสมือนจาก Constructor หรือ Destructor นั้นอันตราย และควรหลีกเลี่ยงเมื่อทำได้ นี่เป็นเพราะว่าฟังก์ชันเสมือนที่คุณเรียกใช้นั้นถูกเรียกจากคลาสฐานไม่ใช่คลาสที่ได้รับ ใน C++ ทุกคลาสจะสร้างเวอร์ชันของตารางเมธอดเสมือนก่อนที่จะเข้าสู่โครงสร้างของตัวเอง ดังนั้นการเรียกเมธอดเสมือนในตัวสร้าง
C++ มีไฟล์ส่วนหัวและ .ccp สำหรับแยกอินเทอร์เฟซออกจากการใช้งาน ไฟล์ส่วนหัวประกาศว่า อะไร ที่คลาส (หรืออะไรก็ตามที่กำลังใช้งาน) จะทำ เช่น API ของคลาส เหมือนกับอินเทอร์เฟซใน Java ในทางกลับกัน ไฟล์ cpp กำหนด วิธี ที่จะใช้งานคุณลักษณะเหล่านั้น เช่น การใช้งานฟังก์ชันที่ประกาศไว้ ซึ่งจะช่วยลดการพึ่งพา โค้
ไม่มีโซลูชันแบบพกพาสำหรับการทำเช่นนี้ บน windows คุณสามารถใช้ฟังก์ชัน getch() จากไลบรารี conio(Console I/O) เพื่อกดตัวอักษร ตัวอย่าง #include<iostream> #include<conio.h> using namespace std; int main() { char c; while(1){ // infinite loop
คุณสามารถใช้สตรีมสตริงเพื่อแยกวิเคราะห์ int ใน c++ เป็น int คุณต้องทำการตรวจสอบข้อผิดพลาดในวิธีนี้ ตัวอย่าง #include<iostream> #include<sstream> using namespace std; int str_to_int(const string &str) { stringstream ss(str); int num; ss >>
คุณสามารถใช้เมธอด c_str() ของคลาสสตริงเพื่อรับ const char* ที่มีเนื้อหาสตริง ตัวอย่าง #include<iostream> using namespace std; int main() { string x("hello"); const char* ccx = x.c_str(); cout << ccx; } ผลลัพธ์ สิ่งนี้จะให้ผลลัพธ์ - hell
เอาต์พุตสตรีม cout อนุญาตให้ใช้ตัวจัดการที่คุณสามารถใช้เพื่อตั้งค่าความแม่นยำโดยตรงบน cout และใช้ตัวระบุรูปแบบคงที่ เพื่อให้ได้ความแม่นยำของสองเท่า คุณสามารถใช้ไลบรารีขีดจำกัด ตัวอย่างเช่น ตัวอย่าง #include<iostream> #include <limits> using namespace std; int main() { // Ge