[Học OOP] Bài 5: Static trong hướng đối tượng c++ – Kiến Thức 24h

1. Định nghĩa Static c + +

Static trong c + + là tài liệu của lớp không phải là tài liệu của đối tượng người tiêu dùng. Static trong c + + sống sót như một biến toàn cục. Hay nói cách khác tài liệu static Open trước khi bạn khởi tạo đối tượng người tiêu dùng của lớp, và nó chỉ sống sót duy nhất .Các thành viên static hoàn toàn có thể là public, private hoặc protected .Static ngoài khai báo biến còn hoàn toàn có thể khai báo hàm .

Đối với class, static dùng để khai báo thành viên dữ liệu dùng chung cho mọi thể hiện của lớp:

  • Một bản duy nhất tồn tại trong suốt quá trình chạy của chương trình.
  • Dùng chung cho tất cả các thể hiện của lớp.
  • Bất kể lớp đó có bao nhiêu thể hiện.

2. Biến static trong hướng đối tượng người dùng c + +

Ví dụ mình sẽ khai báo một biến static, int count, biến này dùng để đếm số lượng những hình chữ nhật đã được tạo ra .

12345678910111213141516171819

classRectangle

{

private:

intwidth;

intlength;

staticintcount;

public:

voidset(intw,intl);

intarea();

Rectangle()

{

count+ +;

}

Rectangle(intx,inty)

{

count+ +;

set(x,y);

}

}

Như vậy khi một đối tượng người dùng được tạo tất cả chúng ta sẽ tăng count lên để triển khai đúng ý đồ đếm hình chữ nhật .Tuy nhiên tất cả chúng ta không hề gán trước giá trị khởi đầu của static trong class mà tất cả chúng ta phải gán giá trị cho nó ở ngoài class .

ví dụ

123456789

intmain()

{

intRectangle::count=0;

/ / Sau khi khởi tạo giá trị đầu mình tạo minh họa 3 hình chữ nhật

Rectangler1(2,4);

Rectangler2(1,2);

Rectangler3;

}

Ví dụ về static trong c++Ví dụ bên trên chỉ rõ biến static count không phải là tài liệu của đối tượng người dùng như width và length mà nó là tài liệu của class và chỉ sống sót duy nhất .Để sử dụng, gán hoặc lấy giá trị của static bạn sử dụng khoanh vùng phạm vi truy xuất để gọi nó

1

2

345

/ / Ví dụ khởi tạo bắt đầu

intRectangle::count=0;

/ / Gọi biến static :

Rectangle::count

Lưu ý thêm ở phần khai báo mình để static count ở private, nên bên ngoài class không hề dùng khoanh vùng phạm vi truy xuất đến truy vấn ( Như cách gọi Rectangle :: count ) Nhưng việc khai báo và gán giá trị khởi đầu như int Rectangle :: count = 0 ; là được phép .Để dùng Rectangle :: count bạn hoàn toàn có thể khai báo biến static này ở public hoặc viết thêm hàm static get giá trị count này .

3. Hàm static trong hướng đối tượng người dùng c + +

Hàm static có vai trò cũng như biến static. Nghĩa là khi bạn đã khai báo class nhưng chưa tạo ra đối tượng người tiêu dùng như Rectangle r1 ( 2,4 ) thì tất cả chúng ta vẫn truy vấn được biến count như ví dụ trên. Vậy ở phần hàm static cũng có vai trò như vậy, hàm này sẽ là sống sót duy nhất của class .Mình sẽ khai báo thêm static int getCount ( ) ở thuộc tính public

a. Code đơn cử về static

12345678910111213141516171819202122232425

classRectangle

{

private:

intwidth;

intlength;

staticintcount;

public:

voidset(intw,intl);

staticintgetCount()

{

returncount;

}

intarea();

Rectangle()

{

count+ +;

}

Rectangle(intx,inty)

{

count+ +;

set(x,y);

}

}

b. Gọi hàm static

Bạn hoàn toàn có thể gọi hàm static bằng cách sau :

Chủ đề này không thật sự quan trọng lắm, tuy nhiên bạn cũng nên hiểu vì nó rất dễ 🙂Chúc bạn học tốt .