Chỉ là một câu hỏi nhanh.Sử dụng hàm tạo để trả lại
Tôi đã viết một số mã trả về một lớp tùy chỉnh Lệnh và mã tôi đã viết có vẻ hoạt động tốt. Tôi đã tự hỏi nếu có bất kỳ lý do nào mà tôi không nên làm theo cách này. Đó là một cái gì đó như thế này:
Command Behavior::getCommand()
{
char input = 'x';
return Command (input, -1, -1);
}
Dù sao, tôi đọc rằng các nhà xây dựng không có nghĩa là để có một giá trị trả về, nhưng điều này làm việc trong g ++.
Cảm ơn lời khuyên,
Rhys
Cần lưu ý: Điều này, ngữ nghĩa, tạo đối tượng tạm thời rồi sao chép đối tượng khi hàm trả về. Tuy nhiên, trình biên dịch được phép thực hiện những gì được gọi là tối ưu hóa giá trị trả về hoặc RVO. Điều này có nghĩa là nó được phép không làm một bản sao, ví dụ: 'Command x = getCommand();' sẽ trực tiếp xây dựng 'x', thay vì làm cho' x' một bản sao của bất cứ cái gì được trả về. – GManNickG
Câu chuyện dài ngắn: Bạn đang làm mọi thứ đúng! – Potatoswatter