trong C++C++ qua các đối số bằng cách tham chiếu và con trỏ
class bar
{
int i;
char b;
float d;
};
void foo (bar arg);
void foo (bar &arg);
void foo (bar *arg);
đây là một mẫu lớp/struct và chức năng
tôi có một số Qs
- sự khác biệt giữa 1 và cách 2 của đi qua là những gì đối số trong 'asm', kích thước, tốc độ?
- cách đối số được chuyển đến hàm foo trong mỗi trường hợp (trong trường hợp con trỏ tôi biết con trỏ được đẩy trên ngăn xếp)
- khi chuyển đối số, về hiệu quả tại (tốc độ, kích thước, độ ưu tiên) tốt hơn ?
- Cú pháp 'asm' intel tương ứng với mỗi cách truyền đối số là gì?
tôi biết điều gì nói nhiều nhất về "nó không quan trọng trên các trình biên dịch và CPU hiện đại" nhưng điều gì sẽ xảy ra nếu chúng ta đang nói về CPU cũ hoặc trình biên dịch?
cảm ơn trước
CPU sẽ không thành vấn đề. Truyền theo giá trị liên quan đến nhiều công việc hơn cho tất cả các loại nhưng kích thước nhỏ hơn kích thước của một con trỏ. Xem câu trả lời từ cnicutar. –
nó quan trọng trên cpus hiện đại cũng như cpus cũ.Lưu ý rằng x86 là một cpu cũ thậm chí với những cải tiến hiện đại của nó, nó có một số lượng hợp lý của hành lý học cũ mà nó phải mang theo, đặc biệt liên quan đến chủ đề này. cnicutar có một câu trả lời tốt như vậy nó không phải là giá trị lặp đi lặp lại hoặc rephrasing. –