Các kiểu dữ liệu cơ bản trong C++
1. Kiểu dữ liệu là gì? 1.1. Dữ liệu và kiểu dữ liệu Mọi chương trình...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
1. Định nghĩa lớp (class) trong OOP Trong OOP, mỗi đối tượng đều phải thuộc về một lớp nào đó. Khi định nghĩa lớp, cần xác định tên lớp, các thuộc tính và các phương thức thuộc về lớp đó. Cú pháp định nghĩa một lớp trong OOP với C++ Sử dụng từ khóa class […]
Trong OOP, mỗi đối tượng đều phải thuộc về một lớp nào đó. Khi định nghĩa lớp, cần xác định tên lớp, các thuộc tính và các phương thức thuộc về lớp đó.
Sử dụng từ khóa class để định nghĩa một lớp với cú pháp như sau:
class <tên_lớp>{
//Định nghĩa các thành phần dữ liệu
<Phạm vi truy cập>:
<Kiểu_dữ_liệu> thuoctinh1;
<Kiểu_dữ_liệu> thuoctinh2;
<Kiểu_dữ_liệu> thuoctinh3;
...
//Định nghĩa các hàm thành viên
<Phạm vi truy cập>:
<Kiểu_trả_về> ham1(các_tham_số);
<Kiểu_trả_về> ham2(các_tham_số);
<Kiểu_trả_về> ham3(các_tham_số);
. ..
};
Trong đó,
<Phạm vi truy cập> là từ khóa xác định mức độ che dấu hay khả năng truy xuất của các thành phần trong lớp. Các từ khóa đó là private, public hoặc protected.
<Kiểu_dữ_liệu> hay <Kiểu_trả_về> là có thể là một kiểu dữ liệu bất kỳ int, float, kiểu một lớp được định nghĩa, một struct,… hoặc void.
Lưu ý: Nếu không chỉ rõ <Phạm vi truy cập> thì mặc định là private.
class Room{
public:
double length;
double breadth;
double height;
public:
double calculateArea(){
return length * breadth;
}
double calculateVolume(){
return length * breadth * height;
}
};
Trong C++, lớp có thể đặt trước hoặc sau hàm main(), nhưng không được định nghĩa một lớp bên trong một lớp khác.
class Circle
{
//Định nghĩa lớp trước hàm main
...
};
void main()
{
Circle c, c2;
…
}
class Circle;//Khai báo lớp
void main()
{
Circle c, c2;
…
}
class Circle
{
//Định nghĩa lớp sau hàm main
...
};
Các thuộc tính trong lớp được khai báo như khai báo biến. Chúng không thể có kiểu là chính của lớp đó nhưng có thể là kiểu con trỏ của lớp này.
class Circle{
private:
int r; //Khai báo thuộc tính bán kính
Circle s; //Báo lỗi, vì x có kiểu của chính lớp định nghĩa
Circle* p; //Không báo lỗi, vì p là con trỏ
};
Các thuộc tính thường có phạm vi truy cập là private nhằm bảo đảm nguyên lý che dấu thông tin, bảo vệ an toàn dữ liệu của lớp. Lúc này, chương trình không cho phép các hàm bên ngoài truy cập trái phép vào dữ liệu của lớp.
Trong C++, các hàm trong lớp có thể được định nghĩa bên trong hoặc bên ngoài lớp.
class Circle{
private:
float r; //Bán kính, thành phần dữ liệu của từng đối tượng
public:
void setRadius(float bKinh){
r = bKinh;
}
float getRadius(){
return r;
}
};
Các hàm setRadius() và getRadius() được định nghĩa bên trong lớp.
Thường dùng trong trường hợp các lệnh trong hàm quá dài, nên viết ra ngoài lớp để định nghĩa lớp gọn gàng hơn. Cú pháp:
Kiểu_trả_về_của_hàm Tên_lớp::Tên_hàm(danh sách các tham số)
{
//Nội dung hàm
}
Toán tử :: được gọi là toán tử phân giải miền xác định, được dùng để chỉ ra lớp mà hàm đó thuộc vào.
class Circle{
private:
float r; //Bán kính, thành phần dữ liệu của từng đối tượng
public:
float area();
};
float Circle::area(){
return 3.14 * r * r;
}
Hàm area() được định nghĩa bên ngoài lớp.
Qua bài này, các bạn đã biết cách định nghĩa một lớp trong C++. Và các bạn nên nhớ, định nghĩa một lớp giống như tạo ra một kiểu dữ liệu mới trong chương trình. Khi chúng ta sử dụng lớp để khai báo các đối tượng thì các thuộc tính và phương thức trong lớp mới được sử dụng và cấp phát vùng nhớ để lưu trữ.