2010-05-30 59 views
0

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

我想知道如果对象是非类型的,将调用什么函数?

同样在C中,将变量的值或地址传递给函数时调用了什么函数?

感谢和问候!

+0

Eh?非类型是什么意思?基本类型只是推入堆栈,不需要调用任何函数。 – nothrow 2010-05-30 21:43:18

回答

6

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

2

没有函数被调用。

由于非对象类型没有方法,它们只是简单地拷贝到堆栈上以便按照原样使用。

3

复制构造函数仅在对象按值传递时调用(并且是非POD类型)。这是通常的做法之一是通过引用传递对象,如果不希望对象被函数更改,请参考const

1

它取决于实现,但在某些情况下,如果将浮点值传递给期望值为整型的函数,则可能会发生函数调用。 (这是一个实现细节,而不是语言的一部分,这是真的,但它是没有什么值得考虑的,因为这一点,而且这种转换在任何情况下都是缓慢的,函数调用是否需要)。