Trong question này nó đã được thảo luận tại sao phơi bày một loại riêng với auto
:Hiển thị loại riêng tư với tính năng tự động: có thể hữu ích ở đâu?
#include <iostream>
using namespace std;
class Base {
class PrivateClass {
public:
void bar() { cout << "PrivateClass" << endl; }
};
public:
PrivateClass foo() {
PrivateClass a;
return a;
}
};
int main() {
Base b;
auto p = b.foo();
p.bar();
return 0;
}
là hoàn toàn tốt đẹp theo tiêu chuẩn C++ 11. Những gì tôi vẫn không nhận được là làm thế nào thành ngữ này có thể hữu ích trong một ứng dụng thực tế. Có vấn đề gì khi thành ngữ này có thể được sử dụng hiệu quả hay không hoặc nó nên được xem là tác dụng phụ "tò mò" của từ khóa?
Tôi không nghĩ rằng điều này thực sự trả lời câu hỏi. Đó là một câu trả lời hay cho một câu hỏi khác, đó là "việc sử dụng' auto' là gì? " –
Tôi nghĩ nó trả lời câu hỏi. Tên kiểu nội bộ có thể được giữ riêng tư trong khi cho phép máy khách làm việc với các đối tượng thuộc loại đó. –
@Lightness Races trong Orbit, tôi không chắc tại sao bạn nghĩ rằng điều này không trả lời được câu hỏi. Anh ta muốn biết tại sao ai đó sẽ sử dụng 'auto' để lưu trữ một kiểu riêng tư được trả về từ một hàm. Câu trả lời là bởi vì theo cách này, kiểu riêng có thể không được chỉ định trong API công khai. –