Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
C++ ra đời như phần mở rộng của C, bổ sung lập trình hướng đối tượng và rất nhiều tiện ích. Nó vẫn nhanh và sát phần cứng như C, nhưng viết thoải mái hơn nhờ thư viện chuẩn. C++ được dùng nhiều trong game engine, phần mềm hiệu năng cao và lập trình thi đấu.
#include <iostream>
int main() {
std::cout << "Xin chao C++!" << std::endl;
return 0;
}std::cout in ra màn hình, << đẩy dữ liệu vào luồng, std::endl xuống dòng. Tiền tố std:: chỉ ra các thứ thuộc thư viện chuẩn. Biên dịch bằng g++ hello.cpp -o hello.
Không còn phải nhớ định dạng %d, %f như printf của C; C++ tự nhận kiểu:
#include <iostream>
#include <string>
int main() {
std::string ten;
int tuoi;
std::cout << "Nhap ten: ";
std::getline(std::cin, ten);
std::cout << "Nhap tuoi: ";
std::cin >> tuoi;
std::cout << ten << " " << tuoi << " tuoi" << std::endl;
return 0;
}Kiểu std::string tự quản lý bộ nhớ, hỗ trợ nối bằng +, so sánh bằng ==, lấy độ dài bằng .size(). Bạn không còn lo ký tự kết thúc '\0' hay tràn bộ đệm như với chuỗi kiểu C.
vector là mảng động, tự giãn khi thêm phần tử:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> so = {5, 2, 8};
so.push_back(1);
std::sort(so.begin(), so.end());
for (int x : so) {
std::cout << x << " "; // 1 2 5 8
}
std::cout << "\n";
return 0;
}Vòng lặp for (int x : so) (range-based for) và hàm std::sort cho thấy sức mạnh của thư viện chuẩn STL (Standard Template Library), gồm cả map, set, stack, queue được cài đặt sẵn và tối ưu.
C++ có tham chiếu, một bí danh của biến, giúp truyền tham số mà không cần cú pháp con trỏ phức tạp:
void tang(int &x) {
x++;
}
int main() {
int a = 5;
tang(a); // a trở thành 6
return 0;
}#include <iostream>
#include <string>
class SinhVien {
public:
SinhVien(std::string ten, double diem) : ten(ten), diem(diem) {}
void in() const {
std::cout << ten << ": " << diem << "\n";
}
private:
std::string ten;
double diem;
};
int main() {
SinhVien sv("An", 8.5);
sv.in();
return 0;
}Từ khóa public, private kiểm soát quyền truy cập, thể hiện nguyên tắc đóng gói.
| Mục | C | C++ |
|---|---|---|
| Lập trình hướng đối tượng | Không | Có (class, kế thừa, đa hình) |
| Chuỗi | Mảng char | std::string |
| Mảng động | malloc, tự quản lý | std::vector |
| Thư viện cấu trúc dữ liệu | Gần như không có | STL phong phú |
| Nhập xuất | printf, scanf | cin, cout |
malloc, new.Một lý do C++ hiện đại dễ sống hơn C là nó tự dọn bộ nhớ nhờ nguyên tắc RAII: tài nguyên gắn với vòng đời của đối tượng, ra khỏi phạm vi thì tự giải phóng. Công cụ chính là con trỏ thông minh:
#include <iostream>
#include <memory>
struct Quai {
int mau;
Quai(int m) : mau(m) {}
~Quai() { std::cout << "Quai bi huy
"; }
};
int main() {
{
auto q = std::make_unique<Quai>(100);
std::cout << "Mau: " << q->mau << "
";
} // ra khỏi khối, q tự giải phóng
std::cout << "Da ra khoi khoi lenh
";
return 0;
}std::unique_ptr sở hữu duy nhất một đối tượng và tự xóa nó khi hết phạm vi, nên bạn gần như không cần new/delete trực tiếp. std::shared_ptr cho phép nhiều chủ sở hữu và xóa khi chủ cuối cùng rời đi. Chuỗi std::string và std::vector cũng tuân theo nguyên tắc này, nên chúng an toàn hơn mảng thô của C.
Quy tắc thực dụng cho người mới: ưu tiên đối tượng cục bộ và container chuẩn, dùng con trỏ thông minh khi cần cấp phát động, và chỉ tự quản lý bộ nhớ khi thực sự có lý do.
C++ giữ tốc độ của C nhưng đem lại nhiều công cụ giúp code gọn và an toàn hơn. Hãy bắt đầu với cin, cout, string, vector rồi mới đi tới lớp và STL nâng cao.
Học xong lý thuyết, hãy thực hành thật nhiều; các bài giảng có bài tập trong khóa học codebem.com sẽ giúp bạn việc đó.
Nguyễn Đình Cường
0 comment