Trong C++, một đối tượng có thể được xác lập thông quan một biến/hằng có kiểu lớp. Cú pháp tạo đối tượng như sau:
<tên lớp> <tên đối tượng>;
Do đó vùng nhớ được cấp phát cho một biến kiểu lớp sẽ cho ta một khung của đối tượng bao gồm dư liệu là các thể hiện cụ thể của các mô tả dư liệu trong khai báo lớp cùng với các thông điệp gửi tới các hàm thành phần.
Mỗi đối tượng sở hưu một tập các biến tương ứng với tên và kiểu của các thành phần dư liệu định nghĩa trong lớp. Ta gọi chúng là các biến thể hiện của đối tượng. Tuy nhiên tất cả các đối tượng cùng một lớp chung nhau định nghĩa của các hàm thành phần.
Lớp là một kiểu dư liệu vì vậy có thể khai báo con trỏ hay tham chiếu đến một đối tượng thuộc lớp và bằng cách ấy có thể truy nhập gián tiếp đến đối tượng. Nhưng chú ý là con trỏ và tham chiếu không phải là một thể hiện của lớp.
.III PHẠM VI LỚP VÀ TRUY CẬP CÁC THÀNH VIÊN LỚP
.III.1. Phạm vi lớp
Trong lập trình cấu trúc thường đề cập đến phạm vi toàn cục (tệp, chương trình) và phạm vi cục bộ (khối lệnh, hàm). Mục đích của phạm vi là để kiểm soát việc truy xuất đến các biến/hằng/hàm.
Để kiểm soát truy nhập đến các thành phần (dư liệu, hàm) của các lớp, C++ đưa ra khái niệm phạm vi lớp. Tất cả các thành viên dư liệu của một lớp (các biến khai báo trong định nghĩa lớp) và các hàm thành viên (các hàm khai báo trong định nghĩa lớp) thuộc vào phạm vi của lớp. Trong định nghĩa hàm thành phần của lớp có thể tham chiếu đến bất kỳ một thành phần nào khác của cùng lớp đó. Tuân theo ý tưởng đóng gói, C++ coi tất cả các thành phần của một lớp có liên hệ với nhau. Ngoài ra, C++ còn cho phép mở rộng phạm vi lớp đến các lớp con cháu, bạn bè và họ hàng.
Các toán tử được sử dụng để truy cập các thành viên của lớp được đồng nhất với các toán tử sử dụng để truy cập các thành viên của cấu trúc. Toán tử lựa chọn thành viên dấu chấm (.)
được kết hợp với một tên của đối tượng hay với một tham chiếu tới một đối tượng để truy cập các thành viên của đối tượng. Toán tử lựa chọn thành viên mũi tên (->) được kết hợp với một
con trỏ trỏ tới một truy cập để truy cập các thành viên của đối tượng.
Ví dụ 3.3: Chương trình minh họa việc truy cập các thành viên của một lớp với các toán
tử lựa chọn thành viên.
#include <iostream.h> class Count
{ public:
Khung DL Phương thức
Dư liệu cụ thể 1 Tham chiếu phương thức
Dư liệu cụ thể 2 Tham chiếu phương thức
Lớp
Đối tượng Đối tượng
int X;
void Print()
{ cout << X << endl; } };
int main()
{ Count Counter, //Tạo đối tượng Counter
*CounterPtr = &Counter, //Con trỏ trỏ tới Counter &CounterRef = Counter; //Tham chiếu tới Counter
cout << "Assign 7 to X and Print using the object's name: "; Counter.X = 7; //Gán 7 cho thành viên dữ liệu X
Counter.Print(); //Gọi hàm thành viên Print
cout << "Assign 8 to X and Print using a reference: "; CounterRef.X = 8; //Gán 8 cho thành viên dữ liệu X CounterRef.Print(); //Gọi hàm thành viên Print
cout << "Assign 10 to X and Print using a pointer: "; CounterPtr->X = 10; // Gán 10 cho thành viên dữ liệu X CounterPtr->Print(); //Gọi hàm thành viên Print
return 0; }
Assign 7 to X and Print using the object's name: 7 Assign 8 to X and Print using a reference: 8
Assign 10 to X and Print using a pointer: 10