Cho mình hỏi con trỏ trong C có giống với con trỏ trong C++ không ?
@Pete : Có, cùng là gà cả
Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.
hic từ trước đến giờ toàn dùng C dạo gần đây mới đang học C++ nên cũng chưa biết rõ nó khác nhau những gì. Nhưng theo tui nghĩ thì con trỏ của C và C++ thì giống nhau ở các kiểu dữ liệu cơ bản còn khác nhau ở phần OOP, vì chỉ có C++ mới có OOP!
^_,^
Facebook : https://www.facebook.com/langmaninternet
Bùi Tấn Quang
- Dennis Ritchie với Bjarne Stroustrup mà nghe chuyện mấy con gà này chắc chết vì cưới mất!
- Nhưng mình thấy new và delete cũng từ mấy hàm như : malloc,alloc,..., free,... thôi mà! Tóm lại là hai tên đó như nhau!
Nhưng malloc,... chỉ cấp bộ nhớ raw còn new thì còn kiến tạo (construct) đối tượng sau khi cấp phát nữa. Tương tự, free chỉ thu hồi bộ nhớ còn delete thì còn phá hủy (destruct) đối tượng trước khi thu hồi.
Ví dụ, bạn có thể tạo ra một cấu trúc phức tạp chẳng hạn như một danh sách liên kết, một cây nhị phân, hay một vật thể hình học chỉ bằng một lệnh new, nhưng bạn không thể làm được việc này chỉ bằng một lệnh malloc. Bởi vì lệnh new thông qua lời gọi tới constructor sẽ tự động gây ra một loạt lệnh new khác để kiến tạo cấu trúc hoàn chỉnh, còn lệnh malloc thì không.
Tất nhiên đây không phải là hạn chế lớn của C vì trong C ta vẫn có thể viết một hàm kiến tạo (factory function) kiểu như
MyStruct *construct_object(...)
để cấp bộ nhớ đồng thời kiến tạo đối tượng.
- Cái này mình nghĩ bạn đang nói đến constructor của class, lệnh new bình thường ko hề biết làm sao để khởi tạo và hủy các obj đó mà phải do bạn viết code vào các hàm cons và des của nó!Ví dụ, bạn có thể tạo ra một cấu trúc phức tạp chẳng hạn như một danh sách liên kết, một cây nhị phân, hay một vật thể hình học chỉ bằng một lệnh new
- Và cái mà chúng ta đang bàn ở đây là pointer mà!
- Bạn thử cho mình một VD nào đó mà new làm đc còn malloc, alloc,free thì ko xem ^_^!
- Mình ko hiểu "hủy" ở đây là gì, bởi vì cấp phát -> dùng -> free là xong rồi! Bạn thử decompile ra xem delete sẻ làm những gì khi bạn gọi nó, nó sẻ gọi lại mấy hàm như free,... !free chỉ thu hồi bộ nhớ còn delete thì còn phá hủy (destruct) đối tượng trước khi thu hồi.