Thành phần dữ liệu tĩnh

Một phần của tài liệu Bài giảng lập trình hướng đối tượng với C++ doc (Trang 52 - 53)

Thông thường, trong cùng một chương trình các đối tượng thuộc cùng một lớp chỉ sở hưu các thành phần dư liệu của riêng nó. Tuy nhiên, có thể cho phép nhiều đối tượng cùng chia xẻ dư liệu bằng cách đặt từ khoá static trước khai báo thành phần dư liệu tương ứng.

Ví dụ: khai báo lớp exple với thành phần dư liệu tĩnh và tạo 2 đối tượng a và b.

class exple {

static int n; // n là thành phần dữ liệu tĩnh float x;

.... };

int exple::n=5; //khởi tạo thành viên dữ liệu tĩnh ……..

exple a,b; //tạo 2 đối tượng a và b ……..

Khi đó 2 đối tượng a và b tạo ra sẽ có chung thành phần dư liệu n

Thành phần static được dùng chung cho tất cả các đối tượng của lớp đó và do đó vẫn chiếm giư vùng nhớ ngay cả khi không khai báo bất kỳ đối tượng nào. Có thể nói rằng các thành phần dư liệu tĩnh giống như các biến toàn cục trong phạm vi lớp.

Các thành viên dư liệu tĩnh phải được khởi tạo một lần (và chỉ một lần) tại phạm vi file. Tức là chúng được một cách tường minh bên ngoài khai báo lớp. Cú pháp khởi tạo như sau:

<kiểu của thành phần dữ liệu> <tên lớp>::<tên thành phần dữ liệu>=<giá trị>;

Các thành viên tĩnh có thể là public, private hoặc protected. Các thành viên lớp tĩnh public có thể được truy cập thông qua bất kỳ đối tượng nào của lớp đó, hoặc chúng có thể được truy cập thông qua tên lớp sử dụng toán tử định phạm vi. Các thành viên lớp tĩnh

private và protected phải được truy cập thông qua các hàm thành viên public của lớp hoặc

thông qua các friend của lớp. Các thành viên lớp tĩnh tồn tại ngay cả khi đối tượng của lớp đó không tồn tại. Để truy cập một thành viên lớp tĩnh public khi các đối tượng của lớp không tồn

a.n a.x b.n b.x đối tượng b đối tượng a

cập một thành viên lớp tĩnh private hoặc protected khi các đối tượng của lớp không tồn tại, phải dùng đến một hàm thành viên public và hàm phải được gọi với cú pháp;

<tên lớp>::<tên hàm thành viên public>(tham số nếu có);

Một phần của tài liệu Bài giảng lập trình hướng đối tượng với C++ doc (Trang 52 - 53)

Tải bản đầy đủ (DOC)

(133 trang)
w