gpt4 book ai didi

c++ - 这些参数分配在哪里

转载 作者:行者123 更新时间:2023-11-28 07:33:13 26 4
gpt4 key购买 nike

给定这个小程序

#include <iostream>

class A {
public:
A(int n = 0): m_int(n) {}
int m_int;
};

void f(const A& ra, const A& ra2 = A())
{
std::cout << ra.m_int << ra2.m_int << std::endl;
}

int main()
{
f(3);
}

输出是30。我理解整数到A对象的隐式转换。我的问题ra 和 ra2 引用的对象在哪里分配?很明显它们是堆栈分配的,但我想确定一下。

最佳答案

输出“30”实际上是两个数字,“3”和“0”。

3 是从参数堆栈中获取的,由于 A 构造函数的性质,它被隐式转换为 A 对象。

0 是从 ra2 = A() 中得到的。发送此构造函数时,A 没有参数,因此 A(int n = 0) 默认为 int n = 0。构造函数本身采用 n (0) 并将 m_int 设置为 0。

因为 cout 将 3 和 0 连接在一起,所以它看起来像 30。

为了回答你的问题,对象是隐式构造的——它在 malloc 的正式意义上并不是完全“分配”的,而是一个局部变量(它实际存储的地方是特定于实现的)

关于c++ - 这些参数分配在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com