将值传递给函数时调用哪些函数

时间:2010-05-30 21:40:26

标签: c++ c function parameter-passing

在C ++中,如果将类的对象作为参数传递给函数,则将调用该类的复制构造函数。

我想知道对象是否属于非类型,将调用哪个函数?

类似地,在C中,在将值或变量地址传递给函数时会调用什么函数?

谢谢和问候!

4 个答案:

答案 0 :(得分:6)

不会调用任何函数;构成对象的字节将被简单地复制到被调用者的正确位置(即内存中的位置或寄存器)。

答案 1 :(得分:3)

只有在按值传递对象时(和非POD类型),才会调用复制构造函数。这是通常的做法之一是通过引用传递对象和const引用,如果你不希望函数改变对象的原因之一。

答案 2 :(得分:2)

没有调用任何函数。

由于非对象类型没有方法,因此只需将它们复制到堆栈中即可由您的函数按原样使用。

答案 3 :(得分:1)

这取决于实现,但在某些情况下,如果要将浮点值传递给期望值为整数类型的函数,则可能会产生函数调用。 (这是一个实现细节,而不是语言的一部分,这是真的,但同样值得考虑到这一点。而且这种转换在任何情况下通常都很慢,需要或不需要函数调用。)