30/09/2018, 23:10

Em thắc mắc về public và private trong C++ ạ

Em mới học về Class thì chỗ này em thắc mắc về private, sao mình ko khai báo thẳng string name; ở trong public luôn mà phải khai báo gián tiếp như thế ạ ??

*grab popcorn* viết 01:25 ngày 01/10/2018

Bài 15 trong list C++ có nói đó bạn.

Quốc Duy Đặng viết 01:18 ngày 01/10/2018

Nói rồi mà em cũng ko hiểu anh ạ @@, bài đó chỉ nói về công dụng của hàm setName và getName thôi, có vẻ vậy

Phạm Minh Anh Hữu viết 01:20 ngày 01/10/2018

Để đảm bảo tính đóng của hướng đối tượng đó bạn. Thường thì ở private sẽ chứa các thuộc tính, còn public chứa các phương thức của đối tượng. Khi ở tầm vực private thì chỉ các phương thức của đối tượng mới có thể truy cập được, bên ngoài thì không. VD như lớp người, thì bạn là 1 đối tượng của lớp người, có các thuộc tính như chiều cao, cân nặng, số đo 3 vòng …v…v, còn phương thức là chạy, nhảy, nói, đi,…v…v , thì chỉ bạn mới biết, và thay đổi về các thuộc tính của mình, người khác thì không.
Mình mới biết như này thôi

Quốc Duy Đặng viết 01:22 ngày 01/10/2018

@@, khó hiểu quá, giờ mình phải làm sao đây

Nguyen Quang Hien viết 01:15 ngày 01/10/2018

là tính đóng gói của lập trình hướng đối tượng. Tất cả các property/variable đều “nên” để private và truy xuất bằng các method get/set.

Phạm Minh Anh Hữu viết 01:17 ngày 01/10/2018

Tính đóng gói (encapsulation)che giấu thông tin (information hiding): Tính chất này không cho phép người sử dụng các đối tượng thay đổi trạng thái nội tại của một đối tượng. Chỉ có các phương thức nội tại của đối tượng cho phép thay đổi trạng thái của nó. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã. Đây là tính chất đảm bảo sự toàn vẹn của đối tượng.

Bạn hiểu đơn giản là nó che giấu thông tin, chỉ mình nó biết, không ai có thể truy cập thông tin ngoài nó, khi để ở private.

Quốc Duy Đặng viết 01:11 ngày 01/10/2018

cho mình hỏi, khai báo biến để sử dụng hàm trong class thì khai báo biến toàn cục hay cục bộ vậy bạn ?? Mình khai báo trong main thì nó lỗi là sử dụng mà ko khai báo biến.

Nguyen Quang Hien viết 01:26 ngày 01/10/2018

Lỗi báo là biến Timer kia của bạn chưa được gán giá trị

Quốc Duy Đặng viết 01:25 ngày 01/10/2018

vậy mình phải khai báo nó là biến toàn cục hay ở đâu vậy bạn

Phạm Minh Anh Hữu viết 01:18 ngày 01/10/2018

Bạn khai bào biến Timer trong hàm main() mà chưa cho nó giá trị nào mà lại sử dụng nên nó báo lỗi.
Cái thứ 2 là bạn setTimer thì dòng 8 phải là Timer = Time
Còn việc phạm phi biến thì trong hàm cũng được, toàn cục cũng được (tránh sử dụng).

Quốc Duy Đặng viết 01:14 ngày 01/10/2018

Giờ mình muốn nhập vào giá trị thì sau đó nó mới có giá trị thì làm sao vay bạn

Phạm Minh Anh Hữu viết 01:20 ngày 01/10/2018

Ở hàm setTimer bạn truyền tham chiếu cho nó: int &Time

Quốc Duy Đặng viết 01:26 ngày 01/10/2018

Bạn ơi, int &time nó có khác gì int time ko bạn

Quốc Duy Đặng viết 01:21 ngày 01/10/2018

làm như vầy đúng ko bạn, nó còn lỗi undefined @@

Phạm Minh Anh Hữu viết 01:18 ngày 01/10/2018

Biến giatri ở hàm main() bạn chưa khai báo kìa.

Quốc Duy Đặng viết 01:19 ngày 01/10/2018

mình mà khai báo biến trog main thì ra lỗi này


mình khai báo biến toàn cục thì lại đc, mà bạn bảo k nên khai báo biến toàn cục nên mình k xài cách đó nữa

*grab popcorn* viết 01:23 ngày 01/10/2018

._.
Khởi tạo biến giatrimain …
Còn ko thì nhập giá tị vào biến giatrimain.
Lỗi trên tương tự cho cái Timer ở trong main do chưa khởi tạo giá trị cho nó.

Quốc Duy Đặng viết 01:24 ngày 01/10/2018

anh ơi, em làm đc rồi, int giatrimain = 0;
mà sao có lúc int giatrimain trong vài trường hợp, lúc khai báo ko cần set giá trị vẫn đc vậy anh

Quốc Duy Đặng viết 01:18 ngày 01/10/2018

với lại em để int giatrimain; bên trong hàm main thì nó báo lỗi, khai báo toàn cục lại ko mặc dù 2 cách khai báo giống nhau là em ko set giá trị cho nó vậy anh ??

*grab popcorn* viết 01:22 ngày 01/10/2018

Vì biến toàn cục đc tự động set = 0
Còn biến cục bộ thì ko được tự động set = 0 mà nó khá ngẫu nhiên.
Nên cần phải nhập giá trị cho nó hoặc là khởi tạo khi khai báo.

Bài liên quan
0