这些参数分配在哪里
Where are these parameters allocated
给定这个小程序
#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++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 堆分配对象中的堆栈对象在 c++ 中在哪里分配?
- 组件对象模型 (COM):IMalloc::Alloc 在哪里分配内存?
- 当我们在C++中创建类的对象时,为成员函数分配的内存在哪里?
- 分配以下对象属性在哪里
- 静态对象的非静态成员分配在哪里
- 我在哪里定义代码来释放在C Python模块init函数中分配的资源
- 类内的成员变量在哪里分配
- ctime 在哪里以及如何分配内存
- 在堆栈上创建对象时分配的内存在哪里
- std::vector 在哪里分配其内存
- 分配后,我必须在哪里释放内存
- 这些参数分配在哪里
- boost::make_shared在哪里为底层对象和引用计数对象分配内存大小
- 模板化的方法代码在哪里分配?
- 这个内存分配在哪里分配
- 在哪里为已初始化的java中的数据成员分配的内存@声明点..