- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Giả sử tôi có một lớp tên là ClothingStore. Lớp này có 3 chức năng thành viên hướng khách truy cập đến đúng bộ phận của cửa hàng. Các chức năng thành viên là ChildrenDept, MenDept và WomenDept, tùy thuộc vào việc khách truy cập là trẻ em, đàn ông hay phụ nữ.
Nạp chồng hàm có thể được sử dụng để tạo ra 3 hàm có cùng tên, chẳng hạn như PointToDept, nhưng lấy các tham số đầu vào khác nhau (trẻ em, nam, nữ).
Khi một chương trình được thực thi, điều gì thực sự xảy ra trong thời gian chạy?
Tôi đoán là trình biên dịch đã thêm câu lệnh chuyển đổi vào chương trình để chọn đúng hàm thành viên. Nhưng điều đó khiến tôi băn khoăn - liệu có bất kỳ lợi ích nào về hiệu suất chương trình khi sử dụng các hàm bị quá tải thay vì tạo hàm của riêng bạn bằng các câu lệnh chuyển đổi không? Một lần nữa, kết luận duy nhất của tôi cho phần này là khả năng đọc mã. Cảm ơn.
câu trả lời hay nhất
Tôi đoán là trình biên dịch sẽ thêm các câu lệnh chuyển đổi vào chương trình để chọn đúng hàm thành viên.
Đây là một suy đoán sai lầm. C++ là một ngôn ngữ gõ tĩnh. Loại biến không thay đổi trong thời gian chạy. Điều này có nghĩa là quyết định về việc gọi quá tải không đa hình nào luôn có thể được đưa ra tại thời điểm biên dịch. Mục 13.3 trong tiêu chuẩnGiải pháp quá tảiĐiều này được đảm bảo. Không có lý do gì để đưa ra quyết định trong thời gian chạy khi các quyết định có thể được đưa ra vào thời điểm biên dịch. Trong hầu hết các triển khai, chi phí thời gian chạy của hàm quá tải không đa hình là bằng không. Ngoại lệ duy nhất có thể là trình thông dịch C++.
Giới thiệu về c++ - Quá tải hàm hoạt động như thế nào trong thời gian chạy và tại sao nó phải bị quá tải? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21617232/
Giả sử tôi có một lớp trong đó tôi quá tải operator== : Class A { ... public: bool operator== (const A &rhs) const;
Tôi biết bạn không nên sử dụng std::find(some_map.begin(), some_map.end()) hoặc std::low_bound vì sẽ mất thời gian tuyến tính thay vì some_map.lowe
Tôi đang cố gắng xác định kiểu dữ liệu Vector3 trong Haskell và cho phép sử dụng toán tử (+) trên đó. Tôi đã thử như sau: data Vector3 = Vector3 Double Double Doub
Tôi đã nạp chồng toán tử thành "-" cho sơ đồ lớp của mình. Những gì nó làm không hoàn toàn trực quan (mã hóa kém - tôi biết) nhưng nếu tôi thực hiện graph3 = graph2-graph1 thì biểu đồ 3 được cho là chỉ nhận các đỉnh đó từ biểu đồ 2 và biểu đồ 1.
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 11 năm trước. Có thể trùng lặp: Nạp chồng toán tử Tôi muốn nạp chồng để sắp xếp chuỗi theo thứ tự bảng chữ cái, nhưng tôi không chắc chắn cách thực hiện. làm sao nữa
Đoạn mã dưới đây gây ra lỗi biên dịch cho tôi. Có ai có thể cho tôi biết tại sao không? lớp mytype { công khai: giá trị int mytype(int a) { value = a;
Có chuyện gì thế này? class Vec2 attr_accessor :x, :y # ... def += (v) @x += vx @y += vy retu
Có thể nạp chồng toán tử [] hai lần không? Cho phép một cái gì đó như thế này: function[3][3] (giống như trong mảng 2D). Tôi muốn xem một số mã mẫu nếu có thể. Câu trả lời hay nhất Bạn có thể quá tải toán tử [] để trả về một đối tượng
Nhóm của tôi hiện đang làm việc với Lua để tạo một trò chơi Android. Một điều chúng tôi gặp phải là rõ ràng không có khả năng tạo ra các hàm tạo quá tải. Tôi đã quen với việc thiết lập một đối tượng với các giá trị mặc định và sau đó nạp chồng nó khi cần. người tiền nhiệm: táo() {
Tôi có một trang web tại một thời điểm nào đó hiển thị một thanh điều hướng, không gì khác hơn là một danh sách các thành phần (ul). Hầu hết các quy tắc tạo kiểu cho phần tử a được mô tả đều phổ biến. Phần duy nhất cần thay đổi là hình ảnh được hiển thị, có thể lấy từ thẻ id của từng phần tử li trong danh sách
Tôi quan tâm đến việc sử dụng/quá tải toán tử "bước phạm vi" (.. ..) nhưng suốt đời tôi không thể tìm ra cách sử dụng nó. Trong tài liệu có ghi // Cách sử dụng: start .. step .. finish nhưng trong F# shell
Java 11 (có thể không liên quan): public static String toString(Object obj) { return ReflectionToStringBuilder.to
Như hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời sẽ được hỗ trợ bởi các sự kiện, trích dẫn hoặc kiến thức chuyên môn, nhưng câu hỏi có thể gây ra tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng. Nếu bạn cảm thấy vấn đề này có thể được cải thiện và có thể mở lại, hãy truy cập trang
Tôi không hiểu đoạn mã sau (đã nhận xét về số dòng) class Base { void m1(Object o) { } void m2(String o) { } } publi
Tôi có đoạn mã sau: #include sử dụng không gian tên std; struct Integer{ int x;
class myclass{ //định nghĩa ở đây }; myclass e; int myarray[10] /* Làm gì đó... */ e = myarray;
Tại sao toán tử chỉ số dưới (toán tử []) không thể bị quá tải như một hàm bạn bè? Câu trả lời hay nhất là như Bjarne Stroustrup nói trong cuốn sách D&E: Tuy nhiên, ngay cả trong
Tôi có đoạn mã sau: #include sử dụng không gian tên std; struct Integer{ int x;
Vì vậy, tôi gặp vấn đề với nỗ lực gần đây của mình nhằm làm quá tải không gian tên Eng { /** * Cấu trúc biểu thị pixel */ typedef
Làm cách nào để nạp chồng onResume() để hoạt động đúng cách? Tôi muốn quay lại hoạt động về MainActivity nơi tôi muốn có trạng thái giống như sau khi ứng dụng khởi động. Tôi muốn sử dụng tái tạo() nhưng nó lặp hoặc lớp
Tôi là một lập trình viên xuất sắc, rất giỏi!