Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Hỏi về Destructor trong C++

  1. #1
    Ngày gia nhập
    10 2007
    Bài viết
    1

    Mặc định Hỏi về Destructor trong C++

    chào các bro, đây là bài viết đầu tiên của tôitrong 4rum nên mong các bro chỉ giáo dùm.
    - tôi có 1 thắc mắc là khi nào thi chương trình sẽ gọi ra hàm Destructor. Trong lý thuyết thì nói rằng khi out of scope thì compiler sẽ gọi destructor nhưng tôi chưa hiểu rõ lắm ntn là out of scope.

    - tôi muốn biết vì trong bài kiểm tra workthrough trên giấy của tôi. Trong hàm Destructor có lệnh cout << "Destruct " .

    thank

  2. #2
    Ngày gia nhập
    07 2007
    Bài viết
    41

    Tôi tin là bài kiểm tra trên giấy của bạn sẽ có cả đoạn code, vậy thì bạn hãy code lại nó và run and see, bạn sẽ hiểu.

    Trên mạng có một trang web rất hay mà tôi thấy đó là "C++ FAQs", tuy nó chỉ là bản lite nhưng tôi thấy cũng rất hay rồi, hình như trong đống ebook của XCross có bản full thì phải, lâu rồi chuyển qua C# nên cũng chưa đọc nó nữa.

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Thời gian sống của đối tượng có thể tóm tắt sơ sơ như sau : biến toàn cục sống đến khi kết thúc chương trình, biến khai báo trong hàm sẽ sống cho đến khi hàm kết thúc. Khi đối tượng hết thời gian sống, hàm destructor của nó sẽ được gọi. Còn câu lệnh cout<<"destruct" theo mình nghĩ nó chẳng qua chỉ là dùng để test thử xem khi nào hàm destructor được gọi.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    10 2007
    Bài viết
    1

    [QUOTE=meoconlongvang;47085]Thời gian sống của đối tượng có thể tóm tắt sơ sơ như sau : biến toàn cục sống đến khi kết thúc chương trình, biến khai báo trong hàm sẽ sống cho đến khi hàm kết thúc. Khi đối tượng hết thời gian sống, hàm destructor của nó sẽ được gọi.[QUOTE]

    thank bạn

    Còn câu lệnh cout<<"destruct" theo mình nghĩ nó chẳng qua chỉ là dùng để test thử xem khi nào hàm destructor được gọi
    vì đây là yêu cầu của bài test trên giấy mà

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Theo như hiểu biết của Dr thì Destructor sẽ TỰ ĐỘNG được gọi mỗi khi Object sinh bởi class đó được giải phóng. Thực ra ít khi chúng ta cần sử dụng đến nó, nhưng Dr chắc chắn rằng bạn cũng hiểu rằng khi Object được giải phóng, thì không có cái gì đảm bảo rằng mọi thứ liên quan đến Object này cần thiết phải xóa nó khỏi bộ nhớ sẽ được giải phóng cùng, chẳng hạn như một cái link list hoặc một vòng lặp nào đó, hoặc một object khác liên quan .... Lúc đó là lúc destructor là rất cần thiết cho bạn.

    Nếu bạn muốn chi tiết hơn hãy đọc tài liệu về C++, bạn sẽ rõ hơn rất nhiều.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Mặc định Hỏi về Destructor trong C++

    Mọi người cho mình hỏi làm sao biết cái nào đã được giải phóng, cái nào chưa được giải phóng để giải phóng nó ???

    Thanks.
    Keep moving forward!

    ... Retired ...

  7. #7
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Trích dẫn Nguyên bản được gửi bởi nhc1987 Xem bài viết
    Mọi người cho mình hỏi làm sao biết cái nào đã được giải phóng, cái nào chưa được giải phóng để giải phóng nó ???

    Thanks.
    Theo Dr thì: Một Object, một biến sẽ được giải phóng khỏi bộ khi ra khỏi phạm vi của nó, nhưng điều này là không đúng với biến con trỏ. Với biến con trỏ thông thường nó chỉ được giải khóng khi có một tác động hủy vùng nhớ mà nó trỏ đến chẳng hạn như delete.... Nhưng cũng nhiều trường hợp ta cần ngắt chương trình đột ngột do lỗi hoặc một lý do nào đó, lúc đó chúng ta cũng cần phải giải phóng những vùng nhớ đang được giữ bởi chương trình, vì có nhiều trường hợp là nó sẽ không được giải phóng khỏi bộ nhớ.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

Các đề tài tương tự

  1. khi nào thì gọi destructor (.....) trong OPP - c++
    Gửi bởi beautifulsoul84hung trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 22-06-2011, 03:17 AM
  2. Sử dụng destructor hợp lý (trong custom linkedlist)
    Gửi bởi quano1 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 24-12-2010, 05:43 PM
  3. uninitialized variables trong c++ ( destructor )
    Gửi bởi lebuiduc trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 20-09-2009, 12:51 AM
  4. Giải thích dùm em destructor trong C++?
    Gửi bởi sang84119 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 15-06-2009, 12:18 PM
  5. [C++] Cách sử dụng Constructor va Destructor trong C++
    Gửi bởi nguyenvuthang trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 18-02-2009, 12:03 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn