在C ++中,如果将类的对象作为参数传递给函数,则将调用该类的复制构造函数。
我想知道对象是否属于非类型,将调用哪个函数?
类似地,在C中,在将值或变量地址传递给函数时会调用什么函数?
谢谢和问候!
答案 0 :(得分:6)
不会调用任何函数;构成对象的字节将被简单地复制到被调用者的正确位置(即内存中的位置或寄存器)。
答案 1 :(得分:3)
只有在按值传递对象时(和非POD类型),才会调用复制构造函数。这是通常的做法之一是通过引用传递对象和const
引用,如果你不希望函数改变对象的原因之一。
答案 2 :(得分:2)
没有调用任何函数。
由于非对象类型没有方法,因此只需将它们复制到堆栈中即可由您的函数按原样使用。
答案 3 :(得分:1)
这取决于实现,但在某些情况下,如果要将浮点值传递给期望值为整数类型的函数,则可能会产生函数调用。 (这是一个实现细节,而不是语言的一部分,这是真的,但同样值得考虑到这一点。而且这种转换在任何情况下通常都很慢,需要或不需要函数调用。)