- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
智能指针应该/可以在函数中通过引用传递吗?
即:
void foo(const std::weak_ptr& x)
câu trả lời hay nhất
当然你可以通过const&
传递一个智能指针。
这样做也是有原因的:
如果接受所述智能指针的函数只是一个接受原始(观察)指针以操纵(潜在)指针的函数的前端。
除了转让/共享所有权之外,永远不要强制任何人使用智能指针做任何事情,他们可能不会用你坚持的那个来管理它。
在所有其他情况下,使用智能指针意味着转移/共享所有权,并避免廉价复制(只是测试它是否拥有任何东西和引用计数,以及两个指针份)实际上并不能给你买任何东西。
关于c++ - 应该/可以在函数中通过引用传递智能指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562339/
Câu hỏi này đã có câu trả lời ở đây: đã đóng cửa 10 năm trước. Có thể trùng lặp: truyền mẫu theo giá trị hoặc tham chiếu const hoặc…?
Tôi đang nạp chồng một toán tử hai lần với cùng một danh sách tham số. Nhưng kiểu trả về thì khác: T& operator()(par_list){blablabla} const T& operator()(par_list){bla
Giả sử tôi có Hoạt động A triển khai giao diện I. Lớp ViewModel (VM) của tôi chứa tham chiếu đến một đối tượng triển khai giao diện I: lớp A mở rộng
PHP diễn giải &$cái này như thế nào? Tại sao nó được cho phép? Tôi đang gặp phải sự cố sau, có vẻ như là lỗi trong PHP 7.1 và 7.2. Nó hoạt động với các tham chiếu &$this và các lệnh gọi không gian tên chéo cũng như call_user_func_arr
Bất cứ ai có thể giải thích chức năng của "&" bên dưới: class TEST { } $abc =& new TEST(); Nhưng ai đó có thể giải thích tại sao và khi nào tôi cần thứ gì đó như thế này không? Hoặc chỉ cho tôi một người có lời giải thích tốt về điều này
Biến tham chiếu là bí danh, nghĩa là nó là tên gọi khác của biến hiện có. Khi một tham chiếu được khởi tạo cho một biến, bạn có thể sử dụng tên tham chiếu hoặc tên biến để trỏ đến biến đó. Tham chiếu C++ và tham chiếu con trỏ dễ bị nhầm lẫn với con trỏ, có ba điểm khác biệt giữa chúng
Mục lục Giới thiệu Bối cảnh Kết luận Giới thiệu Tôi chọn viết về tài liệu tham khảo trong C++ vì tôi cảm thấy rằng hầu hết mọi người đều hiểu sai tài liệu tham khảo. Và lý do khiến tôi cảm thấy như vậy là vì tôi đã tổ chức nhiều cuộc phỏng vấn về C++ và tôi hiếm khi
Một tham chiếu trong Perl đề cập đến một kiểu vô hướng có thể trỏ đến một biến, mảng, bảng băm (còn được gọi là mảng kết hợp) hoặc thậm chí là một hàm. Nó có thể được sử dụng để tạo một tham chiếu và xác định một biến ở bất kỳ đâu trong chương trình. thêm \ vào trước tên biến Có tham chiếu đến biến $sc này.
Tôi đã viết một mô-đun Perl sẽ được tải từ tập lệnh chính. Mô-đun này sử dụng các chương trình con được xác định trong tập lệnh chính (Tôi không phải là người duy trì). Đối với chương trình con trong tập lệnh chính, cần có phần mở rộng, nhưng tôi không muốn vá tập lệnh chính. Thay vào đó, tôi muốn ghi đè hàm trong mô-đun của mình và lưu ví dụ con ban đầu
Tôi đã dành vài giờ để cố gắng thành thạo Báo giá F#, nhưng tôi đã gặp phải một số trở ngại. Yêu cầu của tôi là lấy các hàm đơn giản (chỉ số nguyên, +, -, /, *) từ loại kết hợp có thể phân biệt được và tạo cây biểu thức mà cuối cùng sẽ được sử dụng để tạo mã C. Tôi biết sử dụng
Nhiều khi, các câu hỏi (đặc biệt là những câu hỏi được gắn thẻ biểu thức chính quy) hỏi về cách xác minh mật khẩu. Có vẻ như người dùng thường tìm kiếm các phương pháp xác minh mật khẩu bao gồm việc đảm bảo rằng mật khẩu chứa các ký tự cụ thể, khớp với các mẫu cụ thể và/hoặc tuân theo số lượng ký tự tối thiểu. Bài viết này nhằm mục đích giúp người dùng tìm đúng mật khẩu
Tôi muốn tham chiếu ô cuối cùng chứa văn bản theo địa chỉ (ví dụ: C800) trong hàm MIN. bạn có thể giúp được không? Sub Set_Formula() '----------------------------- Dim
Sử dụng vòng lặp for thông thường, tôi có thể làm một số việc như: for (let i = 0; i < object.length; i++) { delete object[i] } Regular for-;
Trong Cucumber, bạn xác định các bước xác định cú pháp BDD; ví dụ: thử nghiệm của bạn có thể có: Khi tôi điều hướng đến bước 3 và sau đó bạn có thể xác định một bước: Khi /^I điều hướng t
Mục đích của UnaryExpression là gì và nên sử dụng nó như thế nào? Câu trả lời hay nhất Nó lấy một đối tượng Biểu thức và gói nó bằng một Biểu thức khác. Ví dụ: nếu bạn có một biểu thức cho lambda.
Cho $("#identifier div:first, #idetifier2").fadeOut(300,function() { // Tôi cần tham khảo jus
Tôi không biết thuật ngữ chính xác cho những gì tôi đang tìm kiếm, nhưng những gì tôi đang tìm kiếm là một trích dẫn hoàn chỉnh có thể được đặt giữa dấu ngoặc kép trong các câu lệnh như *, node(), @* và tất cả được liệt kê ở đây cộng với Bất cứ điều gì khác tồn tại. Câu trả lời tôi liên kết để cung cấp một số chi tiết, nhưng cũng
Câu trả lời cho câu hỏi này là nỗ lực của cộng đồng. Chỉnh sửa câu trả lời hiện có để cải thiện bài đăng này. Hiện tại nó không chấp nhận câu trả lời hoặc tương tác mới. Cái gì thế này? Đây là tập hợp các câu hỏi thường gặp. Đây cũng là một cộng đồng Wi
Đã đóng. Câu hỏi này không đáp ứng các nguyên tắc của Stack Overflow. Nó hiện không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Cập nhật câu hỏi để nó thuộc chủ đề
Hãy xem xét đoạn mã tiếp theo: fn get_ref(slice: &'a Vec, f: fn(&'a Vec) -> R) -> R trong đó R: 'a, { f(slice) } fn m
Tôi là một lập trình viên xuất sắc, rất giỏi!