Trang 2 trên tổng số 2 Đầu tiênĐầu tiên 12
Từ 11 tới 19 trên tổng số 19 kết quả

Đề tài: Tại sao cần hàm khởi tạo trong lập trình hướng đối tượng trên C++?

  1. #11
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Mặc định Tại sao cần hàm khởi tạo trong lập trình hướng đối tượng trên C++?

    Thường thì đối với các lớp chứa thuộc tính đơn giản thì dùng hàm khởi tạo mặc định cũng đủ rồi.

    Khi sự phức tạp của các thuộc tính tiến tới một mức độ nào đó thì ta bắt buộc phải viết hàm khởi tạo.

  2. #12
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Bạn à, khi ta không tạo hàm tạo thì máy sẽ tạo ra hàm tạo mặc định có chức năng là KHÔNG LÀM GÌ CẢ.
    Ai bảo là hàm khởi tạo mặc định không làm gì cả ? Việc của nói là gọi các hàm khởi tạo mặc định của các thuộc tính của lớp.

    VD: http://ideone.com/N9cnM

  3. #13
    Ngày gia nhập
    04 2010
    Nơi ở
    Đà Nẵng
    Bài viết
    30

    Trích dẫn Nguyên bản được gửi bởi boss14420 Xem bài viết
    Ai bảo là hàm khởi tạo mặc định không làm gì cả ? Việc của nói là gọi các hàm khởi tạo mặc định của các thuộc tính của lớp.

    VD: http://ideone.com/N9cnM
    Đó là hàm khởi tạo của struct a in ra thôi. Hàm khởi tạo của struct b không làm gì cả. Vì trong b chứ a nên khi khai báo b thì sẽ tạo mới 1 đối tượng a và hàm khởi tạo mặc định của a được gọi.

    Tin học là gì.
    Là lỡ tin mới học đó

  4. #14
    Ngày gia nhập
    04 2010
    Nơi ở
    Đà Nẵng
    Bài viết
    30

    [QUOTE=boss14420;493607]Ai bảo là hàm khởi tạo mặc định không làm gì cả ? Việc của nói là gọi các hàm khởi tạo mặc định của các thuộc tính của lớp.
    #include <iostream>

    struct A {
    A() { std::cout << "A construct\n"; }
    };

    struct B {
    A a;
    B() {};
    };

    int main() {
    B b;
    return 0;
    }

    Nếu thêm hàm khởi tạo tường minh không làm gì cả thì kết quả vẫn vậy.

    Tin học là gì.
    Là lỡ tin mới học đó

  5. #15
    Ngày gia nhập
    11 2010
    Bài viết
    589

    Thế ai gọi hàm khởi tạo của struct A ? Nếu đó không phải là hàm khởi tạo cùa struct B thì là cái gì ?

  6. #16
    Ngày gia nhập
    04 2010
    Nơi ở
    Đà Nẵng
    Bài viết
    30

    Mặc định Tại sao cần hàm khởi tạo trong lập trình hướng đối tượng trên C++?

    Trích dẫn Nguyên bản được gửi bởi boss14420 Xem bài viết
    Thế ai gọi hàm khởi tạo của struct A ? Nếu đó không phải là hàm khởi tạo cùa struct B thì là cái gì ?
    struct A {
    A() { std::cout << "A construct\n"; }
    };

    struct B {
    A a;
    B() {};
    };

    int main() {
    B b;
    return 0;
    }

    trong ví dụ bạn đưa ra mình thêm vào B() {};
    đây là làm khởi tạo của struct B. Vậy trong khi hàm khởi tạo tường minh không làm gì cả mà hàm khởi tạo của struct A vẫn được gọi. Vậy đã đủ chứng minh hàm khởi tạo A không do hàm khởi tạo B gọi rồi chứ?

    Tin học là gì.
    Là lỡ tin mới học đó

  7. #17
    Ngày gia nhập
    04 2010
    Nơi ở
    Đà Nẵng
    Bài viết
    30

    Trích dẫn Nguyên bản được gửi bởi boss14420 Xem bài viết
    Thế ai gọi hàm khởi tạo của struct A ? Nếu đó không phải là hàm khởi tạo cùa struct B thì là cái gì ?
    Hàm khởi tạo được gọi khi 1 đối tượng mới được tạo ra. Vì B chứ A nên khi tạo mới B thì A sẽ được tạo, và hàm khởi tạo A sẽ được tự động gọi, chứ không phải hàm khởi tạo B gọi hàm khởi tạo A.

    Tin học là gì.
    Là lỡ tin mới học đó

  8. #18
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Để tránh kết quả chương trình cho kết quả đầu ra không như mong muốn của người dùng.

    Ví dụ Đơn giản:
    Cậu khai báo 1 class PhanSo. Nếu mẫu số của phân số đó = 0 thì sao. Vì vậy, mình cần phải khởi tạo giá trị ban đầu cho nó là tu = 0, mau = 1

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

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Hỏi [ngu] thật.
    Có thể bạn đi ăn phở chỉ gọi một tiếng "phở". Nhưng hầu hết mọi người đều kèm theo yêu cầu đặc thù của mình, vd phở tái nạm tô lớn nhiều nước béo, ...
    Hàng tự động chỉ áp dụng cho yêu cầu tổng quát.
    Có những lúc hàng tổng quát không hợp thì phải dùng hàm khởi tạo để đạt các tính chất đặc thù.
    Ng ta k hiểu ng ta hỏi đàn hoàng.. cái loại ta đây như bạn sớm muộn cũng failed

    - - - Nội dung đã được cập nhật ngày 05-11-2018 lúc 10:45 AM - - -

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Từ ấy tôi đã gói trong ngoặc vuông, ngụ ý là gì thì bạn phải tìm hiểu về cách viết từ trong ngoặc vuông. Bạn dùng nguyên tắc gì để kết luận nó là nặng?
    Trẩu z bạn@@@@@@@@@@@@@@@@@@@@

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

  1. Dữ liệu quá nhiều mà hiển thị trên trên màn hình 25x80 trong C.
    Gửi bởi muiyen trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 12-10-2013, 01:00 PM
  2. So sánh 1 số đã nhập trên textbox với 1 số trong cột kiểu int trên SQL
    Gửi bởi dmttuan247 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 19-08-2012, 08:54 PM
  3. quản lý cửa sổ trong C#. Tạo form trong suốt trên C#? cho mình hỏi
    Gửi bởi namnt90 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 18-10-2010, 07:07 PM
  4. TÍnh số ngày trong tuần trong khoảng thời gian trên C#??
    Gửi bởi kiemphivn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 17-05-2009, 03:30 PM
  5. Hiện các control trên form trong suốt trong lập trình C#
    Gửi bởi dieucay555 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 20-07-2008, 07:48 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