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

Đề tài: hàm ảo, hàm thuần ảo, lớp với từ khóa virtual, lớp trừu tượng

  1. #1
    Ngày gia nhập
    03 2010
    Nơi ở
    Nha Trang
    Bài viết
    11

    Mặc định hàm ảo, hàm thuần ảo, lớp với từ khóa virtual, lớp trừu tượng

    Có ai giải thích giùm cho mình rõ khi nào thì cần dùng hàm ảo, lớp trừu tượng và mục đích để làm gì?
    Và từ khóa virtual trước tên lớp khác như thế nào so với hàm ảo? Cảm ơn mọi người nha!

  2. #2
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    khi bạn kế thừa đa hình
    vd:
    B kế thừa A, C kế thừa A, D lại kế thừa B,C thì bạn nên
    viết B : vỉtual public A,
    tương tự với C: virtual public A;
    lúc này A sẽ được xem như một lớp cơ sở ảo;
    khi thự hiện phương thức trong D thì những gì thuộc A nó sẽ hiểu là một lớp thôi;
    I'll come back

  3. #3
    Ngày gia nhập
    01 2011
    Bài viết
    116

    chủ yếu là nó phục vụ tính đa hình. Bạn tưởng tượng có 2 lớp: sothuc và sophuc, lớp sophuc là kết thừa lớp số thực(phần thực).
    Hai lớp này đều có các phương thức công,trừ,show....
    có một con trỏ p: sothuc *p; p->show // thì sẽ show ra số thực.
    Nhưng bây giờ bạn muốn p trỏ vào một đối tượng thuộc lớp sophuc, nếu ko sử dụng hàm ảo thì p->show chỉ in ra phần thực của số phức vì ct chỉ biết là p đang trỏ vào 1 sothuc. Sử dụng hàm ảo giúp ct biết p trỏ vào đối tượng thuộc lớp nào mà show đúng ra sophuc.

    Tương tự như thế, nếu bạn có thêm nhiều lớp mới như phanso, 2d,3d,.... cũng có những phương thức cộng, trừ,show... như trên, thì bạn nên xây dựng một lớp cơ sở ảo ví dụ là number chứa các phương thức ảo này, để tất cả các lớp kia kế thừa nó --> thực hiện tính đa hình của oop.

    Tốt nhất là bạn nên đọc thêm sách là code thêm là hiểu ngay thôi mà
    C++ Code:
    1. while ( you_live) {
    2. if (you_failed) try_again();
    3. else if ( you_won) find_new_challenge();
    4. }
    5. system("DEATH");
    6. return HELL;

  4. #4
    Ngày gia nhập
    03 2010
    Nơi ở
    Nha Trang
    Bài viết
    11

    à mình đã hiểu rồi. Cảm ơn mọi người nhiều.

  5. #5
    Ngày gia nhập
    05 2012
    Nơi ở
    tp.hcm
    Bài viết
    9

    Mặc định Bài viết này lâu rùi nhưng vô tình mình đọc lại và muốn thêm 1 số thông tin để có ai cần sau này

    Cái 2 bạn nói ở trên gọi là phương thức ảo thôi chứ ko phải là thuần ảo.
    Phương thức ảo :

    virtual void Toanhan () ;

    Phương thức thuần ảo

    virtual void Toanhan () const=0;
    khi class mà có hàm thuần ảo thì là class thuần ản luôn và phải khi sử dụng phải khai báo class*m_ten.

    có gì sai mọi người góp ý nhé

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

  1. C++ Tutorial Virtual table trong việc dynamic binding phương thức virtual
    Gửi bởi luc13aka47 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 19-04-2016, 08:56 PM
  2. Từ khóa virtual-override
    Gửi bởi protieusoi trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 15-10-2013, 10:10 PM
  3. Bài tập C++ Inheritance - virtual/pure virtual
    Gửi bởi jonathan_nguyen trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 09-02-2013, 10:53 AM
  4. Thuật toán sắp xếp thời khóa biểu tự động?
    Gửi bởi hvcuongit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 12
    Bài viết cuối: 11-12-2012, 04:26 PM
  5. virtual & __stdcall có mâu thuẫn không?
    Gửi bởi hura trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 24-12-2010, 03:40 PM

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