Từ khóa static trong C++

Static trong c++ là dữ liệu của lớp không phải là dữ liệu của đối tượng. Static trong c++ tồn tại như một biến toàn cục. Hay nói cách khác dữ liệu static xuất hiện trước khi bạn khởi tạo đối tượng của lớp, và nó chỉ tồn tại duy nhất.

Từ khóa static trong C++

1. Từ khóa static

Chúng ta có thể định nghĩa các thành viên lớp là static bởi sử dụng từ khóa static trong C++. Khi chúng ta khai báo một thành viên của một lớp là static, khi đó dù cho có bao nhiêu đối tượng của lớp được tạo, thì sẽ chỉ có một bản sao của thành viên static.

Một thành viên static chỉ cần khởi tạo 1 lần và được chia sẻ cho tất cả đối tượng của lớp. Tất cả dữ liệu static được khởi tạo về 0 khi đối tượng đầu tiên được tạo. Chúng ta không thể khởi tạo thành viên static trong định nghĩa lớp, nhưng nó có thể được định nghĩa bên ngoài lớp đó bởi việc khai báo lại biến static như trong ví dụ sau, sử dụng toán tử phân giải phạm vi :: để nhận diện lớp nào sở hữu nó.

2. Lợi thế của từ khóa static trong C++

Bộ nhớ hiệu quả: Bây giờ chúng ta không cần tạo cá thể để truy cập các thành viên static, vì vậy nó sẽ tiết kiệm bộ nhớ. Nó sẽ không nhận được bộ nhớ mỗi khi thể hiện được tạo.

3. Biến static trong C++

Một biến được khai báo là static được gọi là biến static. Không giống như biến instance nhận bộ nhớ mỗi lần bạn tạo đối tượng, chỉ có một bản sao của biến static được tạo trong bộ nhớ. Nó được chia sẻ cho tất cả các đối tượng.

4. Ví dụ sử dụng từ khóa static trong C++

Hãy xem ví dụ đơn giản sau để hiểu hơn về từ khóa static trong C++:

Ví dụ 1: ví dụ sau là một lớp tài khoản ngân hàng, chúng ta muốn tất cả các đối tượng tài khoản được tạo ra đều có một tỉ lệ lãi suất (rateOfInterest) giống nhau.

#include <iostream>

using namespace std;

class Account {
public:
    int accNo; //data member (bien instance)
    string name; //data member(bien instance)
    static float rateOfInterest;
    Account(int accNo, string name) {
        this->accNo = accNo;
        this->name = name;
    }
    void display() {
        cout << accNo << " " << name << " " << rateOfInterest << endl;  
    }
};

float Account::rateOfInterest = 6.8;

int main(void)
{
    Account a1 = Account(201, "Phan Van Vinh"); //tao doi tuong Account
    Account a2 = Account(202, "Dao Van Hoa"); //tao doi tuong Account
    a1.display();
    a2.display();
    return 0;
}

Kết quả:

201 Phan Van Vinh 6.8
202 Dao Van Hoa 6.8

Ví dụ 2: Đếm các đối tượng được tạo ra.

#include <iostream>
using namespace std;
class Account {
public:
    int accno; //data member (bien instance)
    string name;
    static int count;
    Account(int accno, string name) {
        this->accno = accno;
        this->name = name;
        count++;
    }
    void display() {
        cout << accno << " " << name << endl;
    }
};

int Account::count = 0;

int main(void) {
    Account a1 = Account(201, "Phan Van Vinh"); //tao doi tuong Account
    Account a2 = Account(202, "Dao Van Hoa"); //tao doi tuong Account
    Account a3 = Account(203, "Tran Van Phu"); //tao doi tuong Account
    a1.display();
    a2.display();
    a3.display();
    cout << "Tong cac doi tuong la: " << Account::count;
    return 0;
}

Kết quả:

201 Phan Van Vinh
202 Dao Van Hoa
203 Tran Van Phu
Tong cac doi tuong la: 3

Trên đây là bài viết của eLib.VN về Từ khóa static trong C++. Khi được sử dụng trong phạm vi toàn cục của 1 đơn vị biên dịch, static hạn chế truy cập từ các đơn vị biên dịch khác (áp dụng với cả hàm và biến toàn cục). Khi được sự dụng trong phạm vi cục bộ của 1 thủ tục hay hàm, static có nghĩa là biến được khai báo tồn tại trong suốt thời gian chạy của chương trình và chỉ được khởi tạo 1 lần duy nhất.

Ngày:28/10/2020 Chia sẻ bởi:Hoang Oanh Nguyen

CÓ THỂ BẠN QUAN TÂM