Lớp và đối tượng trong C++
Gộp dữ liệu và hành vi thành một khối: định nghĩa lớp, tạo đối tượng, dùng access specifier, constructor và method.
Bài cuối trong loạt C++ cơ bản. Lớp gộp dữ liệu và các hàm thao tác trên dữ liệu đó thành một khối duy nhất — trái tim của lập trình hướng đối tượng.
Lớp là gì?#
Lớp là bản thiết kế. Đối tượng là một thể hiện cụ thể được tạo từ bản thiết kế đó.
#include <iostream>
#include <string>
class Player {
public:
std::string name;
int level = 1;
void greet() const {
std::cout << "Hello, I am " << name << " (level " << level << ").\n";
}
};
int main() {
Player p; // đối tượng
p.name = "Ada";
p.level = 5;
p.greet(); // Hello, I am Ada (level 5).
}cppAccess specifier#
public:— truy cập từ mọi nơi.private:— chỉ truy cập bên trong lớp.
Dữ liệu thường để private, với các member function public làm giao diện. Đây là tính đóng gói.
class Counter {
private:
int count = 0;
public:
void increment() { ++count; }
int get() const { return count; }
};cppCode bên ngoài không chạm trực tiếp vào count — phải đi qua increment() và get().
Constructor#
Constructor chạy khi đối tượng được tạo. Nó trùng tên lớp và không có kiểu trả về:
class Player {
public:
std::string name;
int level;
Player(std::string n, int l) : name(n), level(l) {}
};cppDanh sách khởi tạo member : name(n), level(l) gán giá trị cho các member. Giờ đối tượng cần tham số:
Player p("Ada", 5);cppMethod#
Member function khai báo trong lớp thao tác trên chính đối tượng đó. Hậu tố const hứa method không sửa đổi đối tượng:
int getLevel() const { return level; }cppĐóng gói trong thực tế#
class BankAccount {
private:
double balance = 0;
public:
void deposit(double amount) {
if (amount > 0) balance += amount;
}
double getBalance() const { return balance; }
};cppSố dư không thể bị đặt âm từ bên ngoài — lớp tự kiểm soát dữ liệu của mình.
Kết luận#
Vậy là xong loạt C++ cơ bản: chương trình đầu tiên, biến và kiểu, luồng điều khiển, hàm, con trỏ và tham chiếu, và giờ là lớp. Viết chương trình nhỏ với từng khái niệm và tiếp tục — thư viện chuẩn và STL là bước tiếp theo tự nhiên.