Video C++ Bài 48 - Link List - AddNext

#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây :
#Thông tin về khóa học xem tại đây :

-Sự khác biệt giữa 2 khóa học cũ và mới :
+Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả.
+Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại… Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.

1 Like

std::string CreateSinhVienName(const std::string & prefix , int number)
Tại sao lại dùng reference chỗ này vậy a?

Vì anh không muốn dùng con trỏ mà vẫn có thể gửi được prefix vào mà không cần phải copy toàn bộ chuỗi prefix

1 Like

cho nó là tham số bình thường vẫn được phải ko a?

1 Like

Vẫn được, không sao cả.

1 Like

a giải thích giùm e sự khác nhau giữa hai cách này đi:
SinhVien::SinhVien(int mssv, std:: string name, SinhVien * next)
SinhVien::SinhVien(int mssv, const std:: string & name, SinhVien * const next)

Nếu không có nhu cầu sửa name thì ta nên truyền vào const std:: string & name thay vì std:: string name. Lý do là đỡ mất công copy string vào hàm SinhVien, chỉ cần truyền vào reference, muốn biết reference em xem lại video reference.

Khi không cần sửa *next thì nên truyền SinhVien * const next vì đây là hằng.

1 Like

tại theo e hiểu thì mình truyền tham số vào chỉ là cung cấp số liệu cho hàm thui, còn khi đi ra ngoài thì giá trị của biến vẫn ko đổi mặc dù trong hàm mình có làm gì đi chăng nữa, nên e không biết tác dụng của const là để làm gì

Thực tế mỗi lần gọi hàm hệ điều hành phải copy toàn bộ nội dung của tham số thành một tham số khác và truyền vào hàm. Thao tác này tốn kém khi tham số là một struct lớn.

Đấy là vì em truyền vào biến, nếu truyền vào con trỏ hoặc reference thì sẽ thay đổi được gía trị. Đấy là lý do tại sao em lại cần con trỏ và reference.

Khi dùng con trỏ và reference thì em sẽ sửa được gía trị, nhưng ở đây mục đích dùng con trỏ và reference của anh không phải là để thay đổi gía trị, mà để giảm đi cái bước copy dữ liệu của struct. Thay vì copy một cục lớn, dùng con trỏ hoặc reference anh chỉ tốn 4 bytes, hệ điều hành 32 bits, hoặc 8 bytes, OS 64 bits, cho mọi kiểu dữ liệu.

Vì thế cho nên anh phải dùng const để ngăn chặn việc lỡ tay sửa gía trị.

1 Like

woa cái này e chưa biết, tại đó giờ làm pascal quen tay rùi :smiley:

2 Likes

Cho em hỏi vì sao first phải dùng con trỏ SinhVien… vì e thấy trong bài bài 45 không cần dùng con trỏ vẫn được mà?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?