Cùm tìm hiểu về static trong C++ . Bạn sẽ biết khái niệm static trong C++ là gì cũng như cách sử dụng biến static và hàm static trong class C++ sau bài học này.
Static trong class C++ là gì
Static trong C++ là một toán tử có tác dụng chỉ định một biến hoặc hàm thành viên trong class tồn tại ở dạng tĩnh.
Dạng tĩnh ở đây có ý nghĩa, vùng bộ nhớ dùng để lưu trữ các dữ liệu này sẽ là bất biến, không thay đổi. Đối ngược với dạng tĩnh chính là dạng động (dynamic), ví dụ như khi chúng ta tạo ra các mảng động có thể tự thay đổi kích thước chẳng hạn.
Bằng việc sử dụng static trong class C++, chúng ta sẽ có được biến static và hàm static, là các thành viên được lưu tại các vùng bộ nhớ bất biến. Vì ở dạng tĩnh nên chúng sẽ tồn tại duy nhất trong class, và do đó chúng có thể được sử dụng chung cho tất cả các đối tượng được tạo ra từ class.
Khác với biến static và hàm static là các hàm và biến thành viên thông thường được tạo ra khi chúng ta tạo một đối tượng (instance) từ class. Các thành viên này được lưu giữ tại các vùng bộ nhớ khác nhau và chỉ có thể được sử dụng từ chính đối tượng đã tạo ra chúng mà thôi.
Biến static trong class C++
Biến static trong C++ là biến thành viên ở dạng tĩnh và tồn tại duy nhất trong class. Biến static có khả năng được sử dụng chung cho tất cả các đối tượng được tạo ra từ class. Ngoài ra do nó ở dạng tĩnh nên chúng ta có thể sử dụng trực tiếp nó mà không cần phải tạo đối tượng từ class.
Để tạo biến static trong class C++, chúng ta thêm toán tử static vào đằng trước tên biến khi khai báo biến trong class như sau. Lưu ý là access modifier của biến static phải ở dạng public để cho phép truy cập nó từ ngoài phạm vi class.
class TestClass |
Ưu điểm lớn nhất của biến static đó chính là chúng ta có thể sử dụng trực tiếp nó mà không cần phải tạo ra đối tượng (instance) từ class. Tuy nhiên do không tạo ra instance dẫn đến việc giá trị ban đầu của biến static cũng không được khởi tạo, nên khi dùng biến static mà không tạo ra đối tượng, chúng ta cần phải khởi tạo giá trị cho nó ở bên ngoài phạm vi class.
Ví dụ cụ thể:
|
Giống như ví dụ trên, do sNum là biến static nên chúng ta có thể trực tiếp sử dụng giá trị của nó mà không cần phải tạo ra đối tượng từ class. Tuy nhiên biến num thì chỉ là biến thành viên bình thường nên chúng ta không thể sử dụng trực tiếp nó vì lỗi sẽ xảy ra.
Lưu ý cách viết TestClass::sNum
như trên sử dụng toán tử :
nhằm biểu thị biến thành viên của một class. Bạn có thể tìm hiểu thêm về nó cũng như các cách sử dụng class tại bài Class trong C++.
Hàm static trong class C++
Hàm static trong C++ là hàm thành viên ở dạng tĩnh và tồn tại duy nhất trong class. Giống với biến static thì hàm static có khả năng được sử dụng chung cho tất cả các đối tượng được tạo ra từ class, và chúng ta có thể sử dụng trực tiếp nó mà không cần phải tạo đối tượng từ class.
Để tạo hàm static trong class C++, chúng ta thêm toán tử static vào đằng trước tên hàm khi khai báo hàm trong class như sau. Lưu ý là access modifier của hàm static phải ở dạng public để cho phép truy cập nó từ ngoài phạm vi class.
class TestClass |
Ưu điểm lớn nhất của hàm static đó chính là chúng ta có thể sử dụng trực tiếp nó mà không cần phải tạo ra đối tượng (instance) từ class. Ví dụ cụ thể:
|
Giống như ví dụ trên, do func1 là hàm static nên chúng ta có thể trực tiếp gọi nó mà không cần phải tạo ra đối tượng từ class. Tuy nhiên hàm u thì chỉ là hàm thành viên bình thường nên chúng ta không thể sử dụng trực tiếp nó vì lỗi sẽ xảy ra.
Lưu ý đối với các hàm static có xử lý các biến thành viên, do chúng ta không tạo ra instance dẫn đến giá trị của các biến thành viên này sẽ không được khởi tạo, nên khi sử dụng chúng, bắt buộc phải có bước khởi tạo giá trị cho các biến thành viên. Và đương nhiên để làm được điều đó, các biến thành viên này cũng phải là biến static.
Ví dụ cụ thể:
|
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về static trong class C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/cpp/lap-trinh-cpp-co-ban/huong-doi-tuong-trong-cpp/static-trong-cpp/
HOME › lập trình c++ cơ bản dành cho người mới học lập trình>>28. hướng đối tượng trong c++