- 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
Đây là một mã C++ đơn giản:
Một foo(){
A a; // tạo một đối tượng A cục bộ
trả lại một;
}
thanh trống(const A & a_r){
}
thanh(foo());
Tại sao tham số của thanh chức năng phải là tham chiếu const chứ không chỉ là tham chiếu?
Chỉnh sửa1: Tôi hiểu rằng trích dẫn là để tránh chi phí sao chép. const ở chế độ chỉ đọc. Nhưng ở đây tôi phải biến nó thành một tham chiếu const, nếu không nếu tôi xóa "const" thì g++ sẽ gây ra lỗi cho tôi.
Chỉnh sửa2: Tôi đoán là đối tượng trả về của foo() là đối tượng tạm thời và giá trị của đối tượng tạm thời không được phép thay đổi?
câu trả lời hay nhất
Nếu không có thông báo lỗi, tôi không chắc trình biên dịch có thể nhắc nhở điều gì, nhưng tôi có thể giải thích một cách hợp lý lý do:
Bên trong dòng:
thanh(foo());
Giá trị trả về của foo() là A tạm thời; nó được tạo bằng cách gọi foo() và sau đó bị hủy ngay sau khi bar() trả về. Chẳng ích gì khi thực hiện một thao tác không phải hằng (tức là một thao tác thay đổi tạm thời A) vì đối tượng A sẽ bị hủy ngay lập tức.
Nhìn xa hơn một chút, đây là bản sao ảo của câu hỏi:
Tại sao một tham chiếu không phải là hằng không thể liên kết với một đối tượng tạm thời?
Có một câu trả lời hay.
Về C++ - sự khác biệt giữa tham chiếu tham chiếu và tham chiếu const dưới dạng tham số hàm? , 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/1719818/
Được đánh dấu là bài tập về nhà vì đây là câu hỏi giữa kỳ tôi đã viết và tôi không hiểu câu trả lời. Tôi được yêu cầu giải thích mục đích của từng const trong câu lệnh sau: const char const * const GetName() const { ret
const int* const fun(const int* const& p) const; Tôi đang cố gắng tìm ra các tham số đầu vào của nguyên mẫu hàm đã cho này. Mình đang phân vân giữa 2 cái này, không biết cái nào đúng.
Đoạn mã sau được sử dụng để giảm sự trùng lặp mã khi có cả getters const và không phải const. Nó tạo ra một phiên bản const từ không phải const. Tôi đã tìm kiếm và nhiều người nói rằng tôi nên tạo phiên bản không phải const từ const.
Theo như tôi biết, TypeScript xem biến chuỗi const như một biến loại bất biến chỉ có giá trị đó và không có giá trị nào khác có thể có. Tôi luôn nghĩ rằng việc thêm const là dư thừa. Tại sao tôi nhận được thông tin sau trong phần thứ hai của ví dụ
Tôi có một phương thức có chữ ký sau: size_t AdvanceToNextRuleEntryRelationIndex( size_t index, size_t nStrings, char const
Đầu tiên, sự khác biệt là gì: (1) const char* (2) char const* (3) const char const* Tôi khá chắc chắn rằng tôi hiểu điều này hoàn toàn, nhưng tôi đã hy vọng ai đó có thể cho tôi một câu cụ thể để nó sẽ
Newbie đây! Mình đang đọc một đoạn code và thấy tác giả hay viết hàm thành viên là const int func (const scalar& a) const // etc Các bạn thấy ở đây có ba const, giờ mình hiểu rồi
Tôi luôn nhầm lẫn về cách sử dụng const int*, const int * const và int const * một cách chính xác. Có bộ quy tắc nào xác định những gì bạn có thể và không thể làm không? Tôi muốn biết tất cả những việc phải làm và
Tôi đã thấy mã nơi mọi người sử dụng const làm tham số hàm. Lợi ích của việc sử dụng const* so với const * const là gì? Đây có lẽ là một câu hỏi rất cơ bản, nhưng nếu ai đó có thể giải thích thì tôi sẽ rất biết ơn. Bool IsThisN
Tôi luôn nhầm lẫn về cách sử dụng const int*, const int * const và int const * một cách chính xác. Có bộ quy tắc nào xác định những gì bạn có thể và không thể làm không? Tôi muốn biết tất cả những việc phải làm và
Câu hỏi này đã có câu trả lời ở đây: Sự khác biệt giữa const int*, const int * const và int const * (23) là gì?
Mục đích của việc tham chiếu từ khóa "const" là gì nếu đối tượng được tham chiếu không phải là đối tượng const? Có sự khác biệt nào giữa chức năng của r1 và r2 (bên dưới) không? int i = 42; // đối tượng không phải là const
bạn ơi hãy để tôi giải thích tại sao const const const const int const i = 0; là cú pháp hợp lệ. Tôi từ chối có bất kỳ suy nghĩ về chủ đề này. Mặc dù tôi tò mò liệu đó có phải chỉ là vấn đề cú pháp không? biên soạn
Tôi luôn nhầm lẫn về cách sử dụng const int*, const int * const và int const * một cách chính xác. Có bộ quy tắc nào xác định những gì bạn có thể và không thể làm không? Tôi muốn biết tất cả những điều nên làm và không nên làm liên quan đến nhiệm vụ, chuyển sang các chức năng, v.v.
Các hằng số trong const char* push(const char * const &&_data); có nghĩa là nội dung của tham chiếu không thể thay đổi. Tại sao tôi không thể chuyển const char* để đẩy? Câu trả lời hay nhất cho mã của bạn
Tôi có một câu hỏi về các phương pháp hay nhất khi nói đến con trỏ trong tham số hàm và liệu chúng có nên được chỉ định là *const hay const *const hay không. Tôi biết có nhiều ý kiến khác nhau về việc sử dụng hoặc lạm dụng const. , nhưng ít nhất một số công dụng là để nắm bắt
Tôi hiện đang viết một bài tập cho lớp của mình, bài tập này được cho là hoạt động như một lớp vỏ rất cơ bản. Tôi gần như đã hoàn tất nhưng tôi gặp vấn đề với execvp và mảng ký tự tham số của mình. Đây là một đoạn mã nhỏ của tôi. //Chia trái c
Vì vậy, tôi biết sự khác biệt giữa char const *, char * const và char const * const. Đó là: char* the_string : Tôi có thể thay đổi
Tôi đang chạy một số chương trình mẫu để làm quen lại với C++ và tôi đã gặp phải sự cố sau. Đầu tiên, đây là mã mẫu: void print_string(const char * the_string) { cout << t
Tôi đang gặp khó khăn với các lỗi biên dịch trong hệ thống của mình, đây là mã struct Strless : public bin_function { public : bool operator()(cons
Tôi là một lập trình viên xuất sắc, rất giỏi!