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ế ạ ??
Bài liên quan
Bài 15 trong list C++ có nói đó bạn.
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
Để đả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
@@, khó hiểu quá, giờ mình phải làm sao đây
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.
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.
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.
Lỗi báo là biến Timer kia của bạn chưa được gán giá trị
vậy mình phải khai báo nó là biến toàn cục hay ở đâu vậy bạn
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).
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
Ở hàm setTimer bạn truyền tham chiếu cho nó:
int &Time
Bạn ơi, int &time nó có khác gì int time ko bạn
làm như vầy đúng ko bạn, nó còn lỗi undefined @@
Biến giatri ở hàm main() bạn chưa khai báo kìa.
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
._.
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ó.
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
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 ??
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.