Công khai riêng được bảo vệ trong C++

Ngôn ngữ C++ được phát triển từ C trở lên, nó được bổ sung thêm tính hướng đối tượng. Các lớp (class) là tính năng trung tâm của C++ hỗ trợ thiết lập đối tượng hướng trình và thường được gọi là các kiểu định nghĩa do người dùng xác định (do người dùng xác định)

Một lớp được sử dụng để xác định hình thức của một đối tượng và nó kết nối các biểu thức dữ liệu và các phương thức để thao tác các dữ liệu đó trong một gói gọn gàng. Dữ liệu và hàm bên trong một lớp được gọi là thành viên của lớp đó

Định nghĩa lớp

Lớp (Class) could coi là bản thiết kế của các đối tượng (Object). Nó là một kiểu dữ liệu do người dùng định nghĩa, bao gồm các thành viên dữ liệu và các hàm thành viên của riêng nó

Ta cùng lấy một ví dụ thực tế nhé

Vui lòng xem xét các sinh viên. Mỗi sinh viên đều có thuộc tính chung là. mã sinh viên, mã sinh viên, tên, tuổi, quê quán, điểm toán, điểm lý, điểm hóa, đi, đứng, ngồi, học tập,
Ở đây ta sẽ coi sinh . Lớp sinhvien sẽ có các thành viên là. mã sinh viên, tên, tuổi, quê quán, điểm toán, điểm lý, điểm hóa, đi, đứng, ngồi, học tập,

Vì một lớp là một kiểu dữ liệu do người dùng định nghĩa nên nó sẽ bao gồm các thành viên dữ liệu và các thành viên hàm.
Các thành viên dữ liệu là các biến dữ liệu và các thành viên hàm là các hàm được sử dụng để thao tác với các biến này và các thành viên dữ liệu này và các thành viên hàm xác định .

Trong ví dụ trên.
Lớp sinhvien sẽ có các

  • Thuộc tính (Attribute) is. mã sinh viên, tên, tuổi, quê quán, điểm toán, điểm lý, điểm hóa,
  • Hành vi (Trong C++ sẽ gọi là phương thức Method). đi, đứng, ngồi, học tập,

Trong C++, để định nghĩa một lớp ta bắt đầu bằng từ khóa lớp, tiếp theo đó là tên của lớp và phần thân của lớp được bao bởi cặp dấu {}. Endless Layers ;

Công khai riêng được bảo vệ trong C++

0

1

2

3

4

5

6

7

8

9

10

11

12

13

lớp sinh viên

{

riêng tư.

chuỗi masinhvien, ten, quequan;

int tuoi;

phao diemtoan, diemly, diemhoa;

công khai.

void di();

void dung();

void ngoi();

void hoctap();

};

Từ khóa private và public quyết định các thuộc tính truy cập của các thành viên lớp mà theo sau nó. Các thuộc tính này sẽ được nói trong phần sau

Định nghĩa đối tượng

Trong quá trình thiết lập hướng đối tượng, các đối tượng (Object) là một vật thể thực tế của một sự vật trong thế giới thực, được con người mô hình hóa, ghi lại các tính chất và hành vi, để tạo nên các thuộc tính (

Khi một lớp (Lớp) được định nghĩa, chỉ có đặc tả cho các đối tượng được xác định. Do đó, các đối tượng sẽ không được khởi tạo, nghĩa là không có bộ nhớ hoặc lưu trữ được phân bổ cho các đối tượng thuộc lớp đó. Để sử dụng dữ liệu và các hàm truy cập đã được xác định trong Layer, bạn cần khai báo các đối tượng

cú pháp

0

1

2

3

sinhvien obj_1;

sinhvien obj_2;

Cả hai đối tượng obj_1 và obj_2 sẽ có bản sao của các thành viên dữ liệu (Data Member) riêng.
Như trong ví dụ trên.
Đối tượng obj_1 sẽ có các phương thức mã sinh viên, tên, tuổi, quê quán, điểm toán, điểm lý, điểm hóa, và các hành vi đi, đứng, ngồi, học tập, .

Nghĩa là dữ liệu thành viên của obj_1 sẽ không bị thay thế khi dữ liệu thành viên của obj_2 thay đổi và dữ liệu thành viên của obj_1 cũng sẽ không thể truy cập, tác động đến dữ liệu thành viên của obj_2

Truy cập thành viên dữ liệu

Để truy cập vào dữ liệu thành viên dữ liệu của đối tượng ta sử dụng toán tử truy cập thành viên trực tiếp là dấu chấm

Như ví dụ trên nếu muốn truy cập vào phương thức di() của đối tượng obj_1 thì cú pháp sẽ là

0

1

2

obj_1. di();

Ta cùng xem ví dụ khác

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

#include

sử dụng không gian tên std;

lớp connguoi

{

công khai.

chuỗi hoten;

int tuoi;

công khai.

void đặt()

{

cout << "Nhap Ho Ten. ";

fflush(stdin); // Xóa bộ đệm

getline(cin, this->hoten);

cout << "Nhap Tuoi. ";

cin >> này - >tuoi;

}

};

int chính()

{

connguoi obj; // Khai báo obj là 1 đối tượng trong lớp connguoi

obj. đặt();

cout << "Hồ Mười. " << obj. hoten << endl;

cout << "Tuoi. " << obj. tuoi << endl;

return 0;

}

Ta nhập Input

0

1

2

3

Nguyễn Vân A

18

Biên dịch và chạy chương trình ta sẽ có kết quả

0

1

2

3

Mười. Nguyễn Vân A

Tuổi. 18

Điều quan trọng cần nhớ là

  1. Các thành viên công cộng cũng được truy cập bằng toán tử
  2. Nhưng các thành viên riêng tư và được bảo vệ không thể truy cập trực tiếp theo cách sử dụng toán tử truy cập thành viên trực tiếp này

Các loại phạm vi truy cập

Phạm vi truy cập là cách mà người lập trình quy định về quyền được truy xuất đến các thành phần của lớp

Trong C++ có 3 loại phạm vi chính là. riêng tư, được bảo vệ, công khai

Phạm Vi Truy Cập Ý Nghĩacông khaiKhông hạn chế. Các thành phần thuộc tính này có thể được truy cập ở bất kỳ vị trí nào. privateThành phần thuộc tính này sẽ chỉ được truy cập từ bên trong lớp. Bên ngoài lớp hoặc trong lớp dẫn đầu ra sẽ không thể truy cập được. protectedMở rộng hơn riêng tư một chút. Các thành phần thuộc tính này sẽ có thể truy cập được trong lớp nội bộ và trong lớp dẫn xuất
( Lớp dẫn đầu ra sẽ được trình bày trong bài Tính Kế Thừa )

Hàm thành viên trong lớp

Trong C++ chúng ta có 2 cách để xác định hàm thành viên

  • Xác định bên trong lớp
  • Specify the outside layer

Với ví dụ về lớp connguoi bên trên, hàm set() là một hàm được xác định bên trong lớp

Còn lại để xác định một hàm thành viên bên ngoài lớp ta phải sử dụng phạm vi toán tử. kèm theo đó là tên lớp và tên phương thức

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

#include

sử dụng không gian tên std;

lớp connguoi

{

công khai.

chuỗi hoten;

int tuoi;

công khai.

void set();

};

void connguoi . . đặt()

{

cout << "Nhap Ho Ten. ";

fflush(stdin); // Xóa bộ đệm

getline(cin, this->hoten);

cout << "Nhap Tuoi. ";

cin >> này - >tuoi;

}

int chính()

{

connguoi obj; // Khai báo obj là 1 đối tượng trong lớp connguoi

obj. đặt();

cout << "Hồ Mười. " << obj. hoten << endl;

cout << "Tuoi. " << obj. tuoi << endl;

return 0;

}

Trong phần code bên trên, mình chỉ khai báo void set(); . Sau đó sử dụng toán tử. để gọi lại tên hàm đó và viết các câu lệnh thực thi

Một vài lưu ý

  1. Tất cả các hàm thành viên được định nghĩa bên trong lớp bởi các Inline mặc định, nhưng bạn cũng có thể thực hiện bất kỳ hàm nào không thuộc lớp nào bằng cách sử dụng từ khóa Inline.
    Inline là cách gọi tắt của Inline Function. Nó là các chức năng nội tuyến.
    Hàm nội tuyến là các hàm thực tế, được sao chép ở mọi nơi trong quá trình biên dịch, như macro tiền lý, do đó sẽ tiết kiệm thời gian xử lý hàm gọi.
    Hiểu rõ về Inline Function. Xem tại đây
  2. Khai báo hàm bạn bè là một cách để cấp quyền truy cập riêng và nó không phải là một thành viên hàm.
    Xem thêm về hàm của bạn. At This

Bài viết của mình xin được kết thúc tại đây. Mình rất mong sẽ nhận được những ý kiến ​​đóng góp của các bạn bằng cách comment phía bên dưới, để bài viết của mình ngày càng hoàn thiện hơn. Chào mọi người và hẹn gặp lại mọi người trong bài viết tiếp theo