当我们将类类型的参数传递给cpp中的函数时会发生什么?

问题描述 投票:-1回答:2

我的问题认为是cpp。

我知道我们通过参数的类型(int,double等)将其传递给函数,并且每种数据类型都占用特定的内存大小。但是,当类型是类时,到底发生了什么? (即,我们将类类型的对象传递给函数。)

c++ function class parameter-passing
2个回答
0
投票

就像原始类型一样,类类型的副本将传递给函数。

也与原始类型一样,您可以将reference传递给不会复制该对象的类类型。


0
投票

确切发生的情况将取决于ABI以及准确传递参数的方式。例如,如果从临时对象传递对象,则可能会有复制删除。假设基本设置是传递一个类类型的对象,该对象将通过值命名和传递,实际上发生的操作是:

  1. 对象的空间在堆栈上分配。
  2. 对象使用其复制构造函数复制。
  3. 当执行离开上下文时,无论是正常对象还是异常对象,该对象都会以某种方式被注册(通常是隐式地)破坏。

是否真的发生取决于编译器是否可以确定是否存在任何可观察到的副作用。有很多优化机会。

从概念上讲,与内置类型相同。如果ABI允许并且对象适合,则也可以使用寄存器传递类类型对象。

© www.soinside.com 2019 - 2024. All rights reserved.