STARTING
CONTROL STATEMENT
FUNCTION
ARRAY & POINTER
OOP
STL
ITERATORS
OTHER FEATURES
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Access modifier trong C++

Bài học hôm nay chúng ta sẽ tìm hiểu về access modifier trong C++? Vậy access modifier trong C++ là gì? Chúng ta sẽ cùng tìm hiểu trong nội dung sau đây.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Access modifier trong C++

Access modifier trong C++  được sử dụng để triển khai một tính năng quan trọng của Lập trình hướng đối tượng được gọi là Data Hiding.

Chúng ta cùng xem xét một ví dụ sau: 

Giả sử công ty của chúng ta có lưu trữ thông tin của nhân viên như số điện thoai, email, năm sinh, phòng ban, chức vụ, địa điểm văn phòng làm việc,... Tất cả nhân viên của công ty có thể thấy các thông tin của nhau để tiện liên lạc thông qua trang web intrannet và có tài khoản để đăng nhập.

Bài viết này được đăng tại [free tuts .net]

Người ở ngoài công ty thì không có tài khoản và không thể truy cập vào trang web intrannet để thấy thông tin của nhân viên trong công ty. Chúng ta gọi đó là hidding data.

Access modifier hay Access Specifier trong một lớp được sử dụng để đặt khả năng truy cập của các thành viên lớp. Đó là, nó đặt ra một số hạn chế đối với các thành viên lớp không được truy cập trực tiếp bởi các hàm bên ngoài.

Trong C++ có hổ trợ 3 loại access modifier đó là:

  • Private
  • Public
  • Protected

Lưu ý: Nếu chúng ta không chỉ rõ bất kỳ access modifier cho thành viên của lớp, thì mặc định nó là Private.

Chúng ta sẽ cùng tìm hiểu từng loại access modifier trong C++ nhé.

2. Private access modifier

Các thành viên lớp được khai báo là private thì chỉ có thể được truy cập bởi các hàm bên trong lớp. Chúng không được phép truy cập trực tiếp bởi bất kỳ đối tượng hoặc hàm nào bên ngoài lớp.

Chỉ các hàm thành viên hoặc các hàm bạn mới được phép truy cập các thành viên dữ liệu riêng tư của một lớp. Hàm bạn là gì? Chúng ta sẽ được tìm hiểu trong bài tiếp theo.

Private Access modifier cũng là access modifier mặc định của lớp.

Ví dụ

Chúng ta cùng xem xét một ví dụ đơn giản về private access modifier trong C++ như sau:

Ví dụ
#include<iostream> 
using namespace std; 
  
class HinhTron {    
    private:  
        double banKinh; 
       
    public:     
        double  TinhDienTich() {   
            return 3.14*banKinh*banKinh; 
        } 
}; 
  
int main() {    

    HinhTron ht; 
    // Chung ta thu truy cap du lieu thanh vien private ben ngoai lop
    ht.banKinh = 3.5; 
      
    cout << "Dien tich cua hinh tron la:" << ht.TinhDienTich(); 
    
    return 0; 
} 

Và kết quả sau khi thực thi chương trình trên như sau:

access p1 JPG

Chương trình trên báo lỗi biên dịch vì chúng ta đang truy cập dữ liệu thành viên bán kính ở dạng private.

Tuy nhiên, chúng ta có thể truy cập gián tiếp các thành viên dữ liệu riêng tư của một lớp bằng cách sử dụng các hàm thành viên công khai của lớp. Chúng ta cùng xem ví dụ sau đây có thể truy cập biến banKinh của lớp HinhTron thông qua hàm TinhBanKinh.

Ví dụ
#include<iostream> 
using namespace std; 
  
class HinhTron {    
    private:  
        double banKinh; 
       
    public:     
        void TinhDienTich(double bk) {
            banKinh = bk;
            double dienTich = 3.14*banKinh*banKinh; 
            cout << "Ban kinh la: " << banKinh << endl;
            cout << "Dien tich la: " << dienTich << endl;
        } 
}; 
  
int main() {    

    HinhTron ht; 
    double banKinh = 2;
    ht.TinhDienTich(banKinh);
    
    return 0; 
}

Và kết quả sau khi thực thi chương trình trên là:

access p2 JPG

3. Public access modifier

Tất cả các thành viên lớp được khai báo dưới dạng public sẽ có sẵn cho tất cả mọi người. Các thành viên dữ liệu và các hàm thành viên được khai báo public cũng có thể được truy cập bởi các lớp khác.

Các thành viên public của một lớp có thể được truy cập từ bất cứ đâu trong chương trình bằng cách sử dụng toán tử truy cập thành viên trực tiếp (.) với đối tượng của lớp đó.

Ví dụ

Chúng ta cùng xem một ví dụ đơn giản về public access modifier trong C++ như sau:

Ví dụ
#include<iostream> 
using namespace std; 
  
class HinhTron {    
    public:
        double banKinh;
        double  TinhDienTich() {   
            return 3.14*banKinh*banKinh; 
        } 
}; 
  
int main() {    

    HinhTron ht; 
    ht.banKinh = 3.5; 
      
    cout << "Ban kinh cua hinh tron la: " << ht.banKinh << endl;  
    cout << "Dien tich cua hinh tron la:" << ht.TinhDienTich(); 
    
    return 0; 
}

Và kết quả sau khi thực thi chương trình trên như sau:

access p3 JPG

Trong ví dụ trên, thành viên dữ liệu bán kính là công khai nên chúng ta được phép truy cập bên ngoài lớp.

4. Protected access modifier

Protected access modifier tương tự như private access modifier, sự khác biệt là thành viên lớp được khai báo là Protected không thể truy cập bên ngoài lớp nhưng chúng có thể được truy cập bởi bất kỳ lớp con (lớp dẫn xuất) nào của lớp đó.

Ví dụ

Chúng ta sẽ cùng xem một ví dụ đơn giản về protected access modifier trong C++ như sau:

Ví dụ
#include <bits/stdc++.h> 
using namespace std; 
  
//Lop cha
class Cha {    
    protected: 
        string diaChi;
}; 
 
//Lop con  
class Con : public Cha 
{ 
    public: 
        void ThietLapDiaChi(string dc) { 
            diaChi = dc; 
        } 
          
        void HienThi() { 
            cout << "Dia chi la: " << diaChi << endl; 
        } 
}; 
  
int main() { 
    Con cn; 
    cn.ThietLapDiaChi("Thoi Binh, Ca Mau"); 
    cn.HienThi(); 
    return 0; 
} 

Và kết quả sau khi thực thi chương trình trên như sau:

access p4 JPG

5. Kết luận

Như vậy là chúng ta đã tìm hiểu xong về access modifier trong C++ là gì rồi. Các bạn biết cách bảo vệ dữ liệu của mình như thế nào rồi đúng không.

Mình khuyến khích các bạn nên thiết lập private cho dữ liệu thành viên, và thiết lập hàm dạng public để truy xuất dữ liệu thành viên đó. Không nên truy xuất một cách trực tiếp dữ liệu thành viên của lớp.

Mình sẽ kết thúc bài học hôm nay ở đây. Bài tiếp theo chúng ta sẽ cùng tìm hiểu về hàm bạn trong C++. Các bạn nhớ theo dõi nhé.

Cùng chuyên mục:

Kiểm tra chuỗi có phải là chuỗi pangram hay không trong C

Kiểm tra chuỗi có phải là chuỗi pangram hay không trong C

Loại bỏ các từ trùng lặp trong một chuỗi trong C

Loại bỏ các từ trùng lặp trong một chuỗi trong C

Chuyển đổi một số thành chuỗi số tiếng Anh trong C

Chuyển đổi một số thành chuỗi số tiếng Anh trong C

Tìm chuỗi con dài nhất không chứa ký tự trùng lặp trong C

Tìm chuỗi con dài nhất không chứa ký tự trùng lặp trong C

Chuyển đổi số nguyên sang dạng chuỗi và ngược lại trong C

Chuyển đổi số nguyên sang dạng chuỗi và ngược lại trong C

Kiểm tra số nguyên tố và số hoàn hảo trong C

Kiểm tra số nguyên tố và số hoàn hảo trong C

Tính lũy thừa của một số nguyên trong C

Tính lũy thừa của một số nguyên trong C

Tính phần dư của phép chia hai số nguyên trong C

Tính phần dư của phép chia hai số nguyên trong C

Tính tổng, hiệu, tích, thương của hai số nguyên trong C

Tính tổng, hiệu, tích, thương của hai số nguyên trong C

Sử dụng con trỏ để tính tổng các phần tử trong mảng trong C

Sử dụng con trỏ để tính tổng các phần tử trong mảng trong C

Sử dụng con trỏ để đảo ngược một chuỗi trong C

Sử dụng con trỏ để đảo ngược một chuỗi trong C

Sắp xếp một mảng số nguyên sao cho số lẻ nằm trước số chẵn trong C

Sắp xếp một mảng số nguyên sao cho số lẻ nằm trước số chẵn trong C

Sắp xếp một mảng chuỗi theo thứ tự từ điển trong C

Sắp xếp một mảng chuỗi theo thứ tự từ điển trong C

Sắp xếp một mảng số nguyên theo thứ tự tăng dần hoặc giảm dần trong C

Sắp xếp một mảng số nguyên theo thứ tự tăng dần hoặc giảm dần trong C

Tìm phần tử lớn thứ k trong mảng trong C

Tìm phần tử lớn thứ k trong mảng trong C

Xóa phần tử trùng lặp trong mảng trong C

Xóa phần tử trùng lặp trong mảng trong C

Đảo ngược mảng không sử dụng mảng phụ trong C

Đảo ngược mảng không sử dụng mảng phụ trong C

Tìm số lần xuất hiện của một phần tử trong mảng trong C

Tìm số lần xuất hiện của một phần tử trong mảng trong C

Tìm giá trị lớn nhất và nhỏ nhất trong một mảng trong C

Tìm giá trị lớn nhất và nhỏ nhất trong một mảng trong C

Tách chuỗi thành các từ riêng lẻ và in ra màn hình trong C

Tách chuỗi thành các từ riêng lẻ và in ra màn hình trong C

Top