- C++ คืออะไร: ภาษาแบบหลายกระบวนทัศน์ที่เกิดขึ้นเป็นส่วนขยายของ C ที่รวมการควบคุมระดับต่ำเข้ากับการแยกส่วนระดับสูง
- วิวัฒนาการ: สร้างโดย Bjarne Stroustrup มาตรฐานสมัยใหม่ (C++17, C++20) แนะนำโมดูล แนวคิด และโครูทีน
- คุณสมบัติหลัก: การเขียนโปรแกรมเชิงวัตถุ เทมเพลต การจัดการหน่วยความจำด้วยตนเอง และชุดไลบรารีมาตรฐานที่ครอบคลุม
- แอปพลิเคชันและเครื่องมือ: ใช้ในระบบ วิดีโอเกม และฐานข้อมูล คอมไพเลอร์ (GCC, Clang, MSVC) และ IDE เช่น Visual Studio หรือ CLion
C++ เป็นหนึ่งในภาษาการเขียนโปรแกรมที่มีอิทธิพลและใช้กันอย่างแพร่หลายที่สุดในโลกการพัฒนาซอฟต์แวร์ ตั้งแต่เริ่มก่อตั้งจนถึงปัจจุบัน ได้มีการพัฒนาจนกลายเป็นเครื่องมืออันทรงพลังและอเนกประสงค์ที่ช่วยให้โปรแกรมเมอร์สร้างแอปพลิเคชันที่มีประสิทธิภาพและประสิทธิภาพสูง ในบทความนี้ เราจะแนะนำบทนำภาษา C++ อย่างละเอียด
การแนะนำภาษา C++
C++ คืออะไร?
C++ เป็นภาษาโปรแกรมอเนกประสงค์ที่ผสมผสานคุณสมบัติของทั้งการเขียนโปรแกรมระดับต่ำและระดับสูง มันถูกออกแบบมาเพื่อต่อยอดจากภาษา Cโดยเพิ่มฟังก์ชันการทำงานใหม่ๆ เช่น การเขียนโปรแกรมเชิงวัตถุ ความอเนกประสงค์ของมันทำให้เหมาะสำหรับการพัฒนาทุกอย่างตั้งแต่ระบบปฏิบัติการไปจนถึงวิดีโอเกม
ประวัติศาสตร์และวิวัฒนาการ
ประวัติความเป็นมาของภาษา C++ เริ่มต้นในปี 1979 เมื่อ Bjarne Stroustrup เริ่มพัฒนาสิ่งที่เขาเรียกว่า "C ที่มีคลาส" เป้าหมายของเขาคือการปรับปรุงภาษา C โดยการเพิ่มคุณสมบัติจากภาษาอื่นๆเช่น Simula ในปี 1983 ภาษาดังกล่าวได้รับการเปลี่ยนชื่อเป็น C++ และตั้งแต่นั้นมาก็มีการปรับปรุงและกำหนดมาตรฐานหลายครั้ง โดย C++20 เป็นเวอร์ชันล่าสุด ณ เวลาที่เขียนบทความนี้
พื้นฐาน C++
การจะเริ่มต้นการเขียนโปรแกรมใน C++ จำเป็นต้องเข้าใจแนวคิดพื้นฐานเสียก่อน เรามาดูองค์ประกอบสำคัญที่เป็นพื้นฐานของภาษานี้กัน
ไวยากรณ์พื้นฐาน
ไวยากรณ์ C++ คล้ายกับ C แต่มีการเพิ่มส่วนสำคัญบางอย่างลงไป โปรแกรม C++ ทั่วไปเริ่มต้นด้วยการรวมไลบรารีที่จำเป็น ตามด้วยฟังก์ชัน main()ซึ่งเป็นจุดเข้าสู่โปรแกรม ตัวอย่างเช่น:
#include <iostream>
int main() {
std::cout << "¡Hola, mundo!" << std::endl;
return 0;
}
โปรแกรมเรียบง่ายนี้จะแสดงข้อความคลาสสิกอย่าง "Hello, world!" บนหน้าจอ
ชนิดข้อมูลและตัวแปร
C++ มีประเภทข้อมูลให้เลือกมากมาย รวมถึง:
- จำนวนเต็ม (
int) - ตัวเลขจุดลอยตัว (
float,double) - ตัวละคร (
char) - บูลีน (
bool) - อาร์เรย์
- พอยน์เตอร์
ตัวแปรจะถูกประกาศโดยระบุชนิดข้อมูลตามด้วยชื่อตัวแปร ตัวอย่างเช่น:
int edad = 25; float altura = 1.75; char inicial = 'A'; bool esEstudiante = true;
โครงสร้างการควบคุม
โครงสร้างควบคุมถือเป็นพื้นฐานในภาษาการเขียนโปรแกรมทุกภาษา และ C++ ก็ไม่มีข้อยกเว้น สิ่งเหล่านี้ช่วยให้เราควบคุมกระบวนการดำเนินการของโปรแกรมของเราได้
เงื่อนไข
โครงสร้างแบบมีเงื่อนไขช่วยให้เราสามารถดำเนินการบล็อกโค้ดที่แตกต่างกันได้ขึ้นอยู่กับเงื่อนไขบางประการ ที่พบมากที่สุดคือ if,
else if y else. ตัวอย่างเช่น
int edad = 18;
if (edad >= 18) {
std::cout << "Eres mayor de edad" << std::endl;
} else {
std::cout << "Eres menor de edad" << std::endl;
}
ลูป
การวนซ้ำช่วยให้เราสามารถทำซ้ำบล็อกโค้ดได้หลายครั้ง C++ มีลูปหลายประเภท:
- สำหรับ:เหมาะอย่างยิ่งเมื่อเราทราบจำนวนการวนซ้ำที่แน่นอน
- ในขณะที่: ดำเนินการตราบเท่าที่เงื่อนไขเป็นจริง
- ทำในขณะที่:คล้ายกับ while แต่รับประกันการดำเนินการอย่างน้อยหนึ่งครั้ง
ตัวอย่างของลูป for:
for (int i = 0; i < 5; i++) {
std::cout << i << " ";
}
// Salida: 0 1 2 3 4
ฟังก์ชั่นใน C++
ฟังก์ชันเป็นบล็อกโค้ดที่นำมาใช้ซ้ำได้ซึ่งดำเนินการงานเฉพาะเจาะจง สิ่งเหล่านี้มีความจำเป็นต่อการจัดระเบียบและกำหนดโครงสร้างโปรแกรมของเรา
คำประกาศและคำจำกัดความ
ใน C++ โดยทั่วไปเราจะประกาศฟังก์ชันในไฟล์ส่วนหัว (.h) และกำหนดฟังก์ชันเหล่านี้ไว้ในไฟล์การใช้งาน (.cpp) การประกาศฟังก์ชันจะประกอบด้วยชื่อ ประเภทผลตอบแทน และพารามิเตอร์ ในขณะที่คำจำกัดความจะรวมถึงเนื้อหาของฟังก์ชันด้วย
// Declaración (en archivo .h)
int sumar(int a, int b);
// Definición (en archivo .cpp)
int sumar(int a, int b) {
return a + b;
}
การส่งพารามิเตอร์
C++ อนุญาตให้คุณส่งพารามิเตอร์ไปยังฟังก์ชันได้หลายวิธี:
- ตามมูลค่า: สำเนาของข้อโต้แย้งถูกสร้างขึ้นแล้ว
- สำหรับการอ้างอิง: ที่อยู่หน่วยความจำของอาร์กิวเมนต์ถูกส่งต่อไป
- โดยตัวชี้:คล้ายกับการอ้างอิง แต่มีความยืดหยุ่นมากกว่า
ตัวอย่างการผ่านโดยการอ้างอิง:
void incrementar(int &numero) {
numero++;
}
int main() {
int x = 5;
incrementar(x);
std::cout << x; // Salida: 6
return 0;
}
การเขียนโปรแกรมเชิงวัตถุ
หนึ่งในคุณลักษณะอันทรงประสิทธิภาพที่สุดของ C++ คือการรองรับการเขียนโปรแกรมเชิงวัตถุ (OOP) รูปแบบนี้ช่วยให้เราจัดระเบียบโค้ดของเราเป็นโครงสร้างที่เรียกว่าคลาสซึ่งรวมข้อมูลและพฤติกรรมที่เกี่ยวข้องไว้ด้วยกัน
คลาสและวัตถุ
คลาสคือเทมเพลตสำหรับการสร้างอ็อบเจ็กต์ กำหนดคุณสมบัติ (แอททริบิวต์) และพฤติกรรม (วิธีการ) ที่วัตถุของคลาสนั้นจะมี ตัวอย่างเช่น:
class Persona {
private:
std::string nombre;
int edad;
public:
Persona(std::string n, int e) : nombre(n), edad(e) {}
void saludar() {
std::cout << "Hola, soy " << nombre << " y tengo " << edad << " años." << std::endl;
}
};
int main() {
Persona p1("Ana", 25);
p1.saludar(); // Salida: Hola, soy Ana y tengo 25 años.
return 0;
}
การถ่ายทอดทางพันธุกรรมและความหลากหลาย
การสืบทอดช่วยให้คุณสามารถสร้างคลาสใหม่โดยอิงจากคลาสที่มีอยู่ โดยสืบทอดแอตทริบิวต์และวิธีการของคลาสเหล่านั้น ในทางกลับกัน Polymorphism ช่วยให้เราสามารถใช้อินเทอร์เฟซทั่วไปสำหรับชนิดข้อมูลที่แตกต่างกันได้
class Estudiante : public Persona {
private:
std::string carrera;
public:
Estudiante(std::string n, int e, std::string c) : Persona(n, e), carrera(c) {}
void estudiar() {
std::cout << "Estoy estudiando " << carrera << std::endl;
}
};
การจัดการหน่วยความจำ
C++ ช่วยให้ควบคุมการจัดการหน่วยความจำได้อย่างละเอียด ซึ่งช่วยให้โปรแกรมมีประสิทธิภาพมากขึ้น แต่ก็ต้องใช้ความเอาใจใส่จากโปรแกรมเมอร์มากขึ้นเช่นกัน
พอยน์เตอร์
ตัวชี้คือตัวแปรที่เก็บที่อยู่หน่วยความจำ เป็นเครื่องมือที่มีประสิทธิภาพแต่ก็เป็นแหล่งเกิดข้อผิดพลาดได้บ่อยหากไม่ได้ใช้อย่างถูกต้อง
int x = 5; int *ptr = &x; std::cout << *ptr; // Salida: 5
การจัดสรรแบบไดนามิก
C++ อนุญาตให้มีการจัดสรรหน่วยความจำแบบไดนามิกในระหว่างการทำงานโปรแกรม สิ่งนี้มีประโยชน์เมื่อเราไม่ทราบล่วงหน้าว่าจะต้องใช้หน่วยความจำเท่าใด
int *arr = new int[10]; // Asigna un array de 10 enteros // ... usar el array ... delete[] arr; // Liberar la memoria cuando ya no se necesita
ห้องสมุดมาตรฐาน
C++ มาพร้อมกับไลบรารีมาตรฐานที่มีฟังก์ชันการทำงานที่มีประโยชน์มากมาย
ไอโอสตรีม
ไลบรารีนี้จัดให้มีฟังก์ชันการทำงานสำหรับ เอนทราดาและสาลิดา ของข้อมูล วัตถุ cin y cout มีประโยชน์อย่างยิ่ง:
#include <iostream>
int main() {
int numero;
std::cout << "Introduce un número: ";
std::cin >> numero;
std::cout << "Has introducido: " << numero << std::endl;
return 0;
}
เวกเตอร์และสตริง
vector เป็นการใช้งานอาร์เรย์แบบไดนามิก ในขณะที่ string เป็นคลาสสำหรับจัดการสตริงข้อความได้สะดวกยิ่งขึ้นกว่าอาร์เรย์อักขระแบบดั้งเดิม
#include <vector>
#include <string>
std::vector<int> numeros = {1, 2, 3, 4, 5};
std::string saludo = "Hola, mundo!";
การจัดการข้อยกเว้น
การจัดการข้อยกเว้นเป็นเทคนิคในการจัดการข้อผิดพลาดและสถานการณ์ที่ไม่คาดคิดในโปรแกรมของเรา
ลองจับแล้วโยน
เราใช้ try เพื่อห่อโค้ดที่อาจเกิดข้อยกเว้น catch เพื่อจับและจัดการข้อยกเว้นและ throw ที่จะโยนข้อยกเว้น
#include <stdexcept>
try {
int resultado = dividir(10, 0);
} catch (const std::runtime_error& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
แม่แบบ
เทมเพลตเป็นคุณสมบัติอันทรงพลังของภาษา C++ ที่ช่วยให้คุณเขียนโค้ดทั่วไปที่ใช้งานได้กับข้อมูล ประเภทต่างๆ
ฟังก์ชั่นเทมเพลต
ฟังก์ชันเทมเพลตสามารถทำงานกับประเภทข้อมูลหลายประเภท:
template <typename T>
T maximo(T a, T b) {
return (a > b) ? a : b;
}
int main() {
std::cout << maximo(3, 7) << std::endl; // Salida: 7
std::cout << maximo(3.14, 2.72) << std::endl; // Salida: 3.14
return 0;
}
เทมเพลตคลาส
คล้ายกับฟังก์ชันเทมเพลต เราสามารถสร้างคลาสที่ทำงานกับประเภททั่วไปได้:
template <typename T>
class Contenedor {
private:
T elemento;
public:
void setElemento(T e) { elemento = e; }
T getElemento() { return elemento; }
};
แนวทางปฏิบัติที่ดีในการเขียนโปรแกรม
การใช้แนวปฏิบัติการเขียนโปรแกรมที่ดีถือเป็นสิ่งสำคัญในการเขียนโค้ด C++ ที่มีคุณภาพ
รูปแบบการเขียนโค้ด
การรักษารูปแบบการเขียนโค้ดให้สอดคล้องกันจะช่วยให้โค้ดอ่านง่ายขึ้น ข้อแนะนำบางประการ:
- ใช้ชื่อที่อธิบายตัวแปรและฟังก์ชัน
- รักษารอยบุ๋มให้สม่ำเสมอ
- ใส่รหัสความคิดเห็นเมื่อจำเป็น
การเพิ่มประสิทธิภาพ
C++ ช่วยให้เพิ่มประสิทธิภาพได้ในระดับสูง เทคนิคบางประการได้แก่:
- ใช้ข้อมูลอ้างอิงแทนการคัดลอกทุกครั้งที่เป็นไปได้
- หลีกเลี่ยงการสร้างวัตถุชั่วคราวที่ไม่จำเป็น
- ใช้โครงสร้างข้อมูลที่เหมาะสมสำหรับแต่ละงาน
เครื่องมือพัฒนา
หากต้องการเขียนโปรแกรมใน C++ อย่างมีประสิทธิภาพ จำเป็นต้องมีเครื่องมือที่เหมาะสม
คอมไพเลอร์
คอมไพเลอร์ยอดนิยมสำหรับ C++ ได้แก่:
- GCC (การรวบรวมคอมไพเลอร์ GNU)
- เสียงดังกราว
- Microsoft Visual C ++
IDE ยอดนิยม
สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDE) ยอดนิยมบางส่วนสำหรับ C++ ได้แก่:
- Visual Studio
- คลีออน
- รหัส :: บล็อก
- Eclipse กับปลั๊กอิน CDT
การใช้งานจริง
C++ ถูกนำมาใช้ในหลากหลายสาขาเนื่องจากประสิทธิภาพและความหลากหลาย
การพัฒนาซอฟต์แวร์
C++ ถูกใช้กันอย่างแพร่หลายในการพัฒนา:
- ระบบปฏิบัติการ
- เว็บเบราว์เซอร์
- ฐานข้อมูล
- ซอฟต์แวร์สำนักงาน
videogames
โปรแกรมเกมและเกมประสิทธิภาพสูงจำนวนมากเขียนด้วย C++ ซึ่งรวมถึง:
- Unreal Engine
- CryEngine
- เกมเช่น World of Warcraft และ Counter-Strike
แหล่งข้อมูลสำหรับการเรียนรู้ C++
หากต้องการเรียนรู้และปรับปรุงทักษะ C++ ของคุณต่อไป นี่คือแหล่งข้อมูลที่แนะนำ
หนังสือแนะนำ
- «C++ Primer» โดย Stanley Lippman, Josée Lajoie และ Barbara E. Moo
- «C++ ที่มีประสิทธิภาพ» โดย Scott Meyers
- ภาษาการเขียนโปรแกรม C++ โดย Bjarne Stroustrup
คอร์สออนไลน์
- C++ สำหรับโปรแกรมเมอร์ที่ Udacity
- บทช่วยสอน C++ สำหรับผู้เริ่มต้นบน Udemy
- หลักสูตรการเขียนโปรแกรม C++ บน edX
คำถามที่พบบ่อยเกี่ยวกับการแนะนำภาษา C++
1. C++ เรียนยากมั้ย?
C++ อาจเป็นความท้าทายในตอนแรก โดยเฉพาะหากมันเป็นภาษาการเขียนโปรแกรมแรกของคุณ อย่างไรก็ตาม ด้วยการฝึกฝนและความทุ่มเท ก็สามารถเชี่ยวชาญมันได้ เริ่มต้นด้วยพื้นฐานแล้วค่อยๆ ขยับไปสู่หัวข้อที่ซับซ้อนมากขึ้น
2. ความแตกต่างระหว่าง C กับ C++ คืออะไร?
C++ เป็นส่วนขยายของ C ที่เพิ่มฟีเจอร์เช่นการเขียนโปรแกรมเชิงวัตถุ การจัดการข้อยกเว้น และเทมเพลต ในขณะที่ C เป็นภาษาเชิงกระบวนการ C++ เป็นภาษาแบบหลายกระบวนทัศน์
3. C++ เหมาะกับโครงการประเภทใดที่สุด
C++ เหมาะอย่างยิ่งสำหรับโปรเจ็กต์ที่ต้องการประสิทธิภาพสูงและการควบคุมทรัพยากรระบบแบบละเอียด ถูกใช้กันอย่างแพร่หลายในการพัฒนาระบบ วิดีโอเกม แอปพลิเคชันเดสก์ท็อป และซอฟต์แวร์ฝังตัว
4. ฉันจะปรับปรุงโค้ด C++ ของฉันได้อย่างไร
หากต้องการปรับปรุงโค้ด C++ ของคุณ ควรฝึกฝนเป็นประจำ อ่านโค้ดของโปรแกรมเมอร์คนอื่น เข้าร่วมในโครงการโอเพนซอร์ส และคอยอัปเดตฟีเจอร์ภาษาใหม่ๆ การทำความคุ้นเคยกับรูปแบบการออกแบบและเทคนิคการเพิ่มประสิทธิภาพก็มีประโยชน์เช่นกัน
5. C++ มีข้อได้เปรียบเหนือภาษาการเขียนโปรแกรมอื่น ๆ อย่างไร?
C++ ให้สมดุลที่ยอดเยี่ยมระหว่างประสิทธิภาพและการแยกส่วน มันช่วยให้สามารถควบคุมทรัพยากรระบบในระดับต่ำได้ ในขณะเดียวกันก็จัดให้มีการแยกย่อยระดับสูงอันทรงพลัง นอกจากนี้ การนำไปใช้อย่างแพร่หลายยังหมายถึงมีห้องสมุดและทรัพยากรต่างๆ มากมายให้เลือกใช้
6. พัฒนาการล่าสุดใน C++ มีอะไรบ้าง?
C++ เวอร์ชันล่าสุด (C++17, C++20) ได้แนะนำคุณลักษณะใหม่ๆ เช่น โมดูล แนวคิด ช่วง และโครูทีน การปรับปรุงเหล่านี้ทำให้ภาษาแสดงออกได้ดีขึ้นและใช้งานง่ายขึ้น ในขณะที่ยังรักษาประสิทธิภาพอันเป็นลักษณะเฉพาะของมันไว้
บทสรุปการแนะนำภาษา C++
บทนำเกี่ยวกับภาษา C++ที่เราได้กล่าวถึงในบทความนี้เป็นเพียงส่วนเล็ก ๆ ของสิ่งที่ภาษาทรงพลังนี้มีให้ ภาษา C++ ยังคงเป็นเครื่องมือที่ขาดไม่ได้ในโลกของการพัฒนาซอฟต์แวร์ ตั้งแต่พื้นฐานไปจนถึงคุณสมบัติขั้นสูงที่สุด
ตลอดการเดินทางของเรา เราได้เห็นแล้วว่า C++ ผสมผสานประสิทธิภาพของการเขียนโปรแกรมระดับต่ำเข้ากับการแยกส่วนระดับสูง ช่วยให้นักพัฒนาสามารถสร้างทุกอย่างตั้งแต่ระบบปฏิบัติการไปจนถึงวิดีโอเกมที่ซับซ้อนได้ โครงสร้างทางไวยากรณ์พื้นฐาน โครงสร้างการควบคุม และแนวคิดการเขียนโปรแกรมเชิงวัตถุเป็นรากฐานที่แอปพลิเคชันที่มีประสิทธิภาพสูงและมีประสิทธิภาพสูงถูกสร้างขึ้น
นอกจากนี้ เรายังได้สำรวจคุณลักษณะขั้นสูงเพิ่มเติม เช่น การจัดการหน่วยความจำ การใช้เทมเพลต และการจัดการข้อยกเว้น ซึ่งทำให้ C++ มีความยืดหยุ่นและพลังที่เป็นเอกลักษณ์ ในทางกลับกัน ไลบรารีมาตรฐานจัดให้มีเครื่องมือที่พร้อมใช้งานซึ่งจะช่วยเร่งความเร็วในการพัฒนาและปรับปรุงประสิทธิภาพการทำงาน
สิ่งสำคัญคือต้องจำไว้ว่าการเชี่ยวชาญ C++ นั้นเป็นการเดินทางที่ต่อเนื่อง ภาษานี้มีการพัฒนาอย่างต่อเนื่อง โดยมีการแนะนำคุณสมบัติใหม่และการปรับปรุงใหม่ในแต่ละเวอร์ชัน ดังนั้นจึงจำเป็นอย่างยิ่งที่จะต้องคอยอัปเดตและฝึกฝนอย่างต่อเนื่องเพื่อให้ใช้ประโยชน์จากทุกสิ่งที่ C++ นำเสนอให้ได้มากที่สุด
ไม่ว่าคุณเพิ่งเริ่มต้นเส้นทางการเขียนโปรแกรมหรือกำลังมองหาวิธีขยายทักษะของคุณ C++ ก็มอบโลกแห่งความเป็นไปได้มากมาย ด้วยการผสมผสานที่เป็นเอกลักษณ์ระหว่างประสิทธิภาพ ความยืดหยุ่น และพลังในการแสดงออก C++ จะยังคงเป็นภาษาพื้นฐานในภูมิทัศน์ของการเขียนโปรแกรมในปีต่อๆ ไป
จำไว้ว่ากุญแจสำคัญในการเชี่ยวชาญ C++ คือการฝึกฝนอย่างต่อเนื่องและนำแนวคิดไปใช้กับโครงการจริง อย่ากลัวที่จะทดลอง ทำผิดพลาด และเรียนรู้จากมัน ทุกบรรทัดของโค้ดที่คุณเขียนนำคุณเข้าใกล้การเป็นผู้เชี่ยวชาญ C++ อีกหนึ่งก้าว
พร้อมที่จะดำดิ่งสู่โลกอันน่าตื่นตาตื่นใจของ C++ หรือยัง? การเดินทางเพิ่งเริ่มต้น!
คุณพบว่าคำแนะนำภาษา C++ นี้มีประโยชน์หรือไม่? หากเป็นเช่นนั้น โปรดแชร์บทความนี้กับเพื่อนโปรแกรมเมอร์ของคุณหรือผู้ที่สนใจจะเข้าสู่โลกแห่งการเขียนโปรแกรม เราร่วมกันสร้างชุมชนนักพัฒนา C++ ที่แข็งแกร่งและร่วมมือกันมากขึ้น แบ่งปันตอนนี้และช่วยให้ผู้อื่นค้นพบพลังของ C++!
ดัชนี
- 1 การแนะนำภาษา C++
- 2 พื้นฐาน C++
- 3 โครงสร้างการควบคุม
- 4 ฟังก์ชั่นใน C++
- 5 การเขียนโปรแกรมเชิงวัตถุ
- 6 การจัดการหน่วยความจำ
- 7 ห้องสมุดมาตรฐาน
- 8 การจัดการข้อยกเว้น
- 9 แม่แบบ
- 10 แนวทางปฏิบัติที่ดีในการเขียนโปรแกรม
- 11 เครื่องมือพัฒนา
- 12 การใช้งานจริง
- 13 แหล่งข้อมูลสำหรับการเรียนรู้ C++
- 14 คำถามที่พบบ่อยเกี่ยวกับการแนะนำภาษา C++
- 15 บทสรุปการแนะนำภาษา C++