Nó cho phép trong trường hợp bạn muốn khai báo một hàm trả về một đối tượng của lớp đó ngay sau lớp khai, ví dụ:
#include <iostream>
inline class AAA
{
public:
AAA()
{
// Nothing
}
AAA(const AAA& _Param)
{
std::cout << "Calling Copy Constructor of AAA\n";
}
}A()
{
AAA a;
return a;
};
int main()
{
A();
return 0;
}
Ngoài ra, bạn nên chú ý đến lỗi biên dịch (hoặc cảnh báo) mà xuất hiện trong các trường hợp bất hợp pháp khác, chẳng hạn như khai báo biến thay vì A()
, cũng lưu ý rằng trình biên dịch tuyên bố rằng nó bỏ qua từ khóa inline
nếu bạn không khai báo bất kỳ hàm nào.
Hy vọng điều đó hữu ích.
Edit: Đối với Các bình luận của Eonil
Nếu bạn đang nói về mã của bạn ở trên trong câu hỏi, sau đó nó là trường hợp tương tự như tôi thấy, trình biên dịch sẽ cung cấp cho bạn một cảnh báo: 'inline ' : ignored on left of 'AAA' when no variable is declared
Tuy nhiên, nếu bạn sử dụng mã trong câu trả lời của tôi, nhưng thay A()
với một biến, B
ví dụ, nó sẽ tạo ra một lỗi biên dịch: 'B' : 'inline' not permitted on data declarations
vì vậy, chúng tôi thấy rằng trình biên dịch đã không sai lầm wit h chấp nhận tuyên bố như vậy, làm thế nào về cố gắng để viết inline double;
ngày của riêng mình?Nó sẽ tạo ra một cảnh báo: 'inline ' : ignored on left of 'double' when no variable is declared
Bây giờ làm thế nào về tuyên bố này:
double inline d()
{
}
Nó cung cấp cho không có cảnh báo hoặc lỗi, đó là chính xác giống như:
inline double d()
{
}
từ các ưu tiên của inline
không quan trọng chút nào.
Mã đầu tiên (trong toàn bộ câu trả lời) cũng tương tự như viết:
class AAA
{
// Code
};
inline class AAA A()
{
// Code
}
đó là hợp pháp.
Và, theo cách khác, nó có thể được viết như sau:
class AAA
{
// Code
};
class AAA inline A()
{
// Code
}
Bạn sẽ được thuyên giảm nếu bạn thấy đoạn mã đầu tiên (trong toàn bộ câu trả lời) bằng văn bản như:
#include <iostream>
class AAA
{
// Code
} inline A()
{
// Code
};
Nhưng chúng giống nhau, vì không có tầm quan trọng đối với mức độ ưu tiên của inline
.
Hy vọng nó rõ ràng và thuyết phục.
inline chức năng có ý nghĩa .... nhưng lớp inline ?? – mpen
"Đây là gì?" - Cái gì đó không tồn tại trong tiêu chuẩn C++. Trình chỉ định 'inline' là cho các hàm, không phải các lớp. Bạn có thể đã vấp phải một lỗi trong trình biên dịch Clang C++. –
Đã thêm thẻ 'clang', tôi không thể tìm thấy bất kỳ thứ gì trên trình theo dõi lỗi, nó có thể đáng để mở một thẻ (bạn luôn có thể gửi thư đến cfe-dev [at] cs.uiuc.edu trước nếu bạn không chắc chắn). Nếu điều này là trên dòng 2.9, họ có thể sẽ muốn sửa chữa nó sớm. –