如何在C++中打印对象的地址
How do you print the address of an object in C++?
如果我有以下基本的C++程序:
#include <iostream>
using namespace std;
class CRectangle {
int x, y;
public:
void set_values (int,int);
int area () {return (x*y);}
};
void CRectangle::set_values (int a, int b) {
x = a;
y = b;
}
int main () {
CRectangle rect;
rect.set_values (3,4);
cout << "area: " << rect.area() <<endl;
cout <<&rect<<endl;
cin.get();
return 0;
}
打印变量 RECT 地址的最后一个 print 语句是打印变量 RECT 的地址还是对象的地址?它们是一样的吗?
它们是相同的。 它打印的 rect 地址与对象的地址相同。 Rect 在堆栈上,因此整个对象也在堆栈上。
如果这就是你的意思,就没有类的地址这样的东西? &CRectangle不存在,只存在类(&rect)的一个实例的地址。 类定义本身不占用内存。
变量rect
是CRectablge
的对象,所以在这种情况下变量的地址和对象之间没有区别。
rect
只是堆栈中对象的标识符。在本例中,CRectangle
的实例。
通过调用 &rect
,您将在堆栈中获取对象所在的地址。
相关文章:
- 空基优化子对象的地址
- 对象地址是否保证是其类型对齐的倍数
- 更改保留指向其字段的原始指针的对象地址
- 指向未由对象地址初始化的对象的指针如何将值分配给类的数据成员
- 为什么存储对象地址在缓冲区中会导致内存泄漏并删除它们
- 尝试将派生类对象地址分配给基类指针的向量
- 如果类型相同,对象地址必须不同,但如果类型不同,地址可以相同
- 使用对象地址以及方法地址和签名调用C 成员函数
- 将派生的对象地址分配给基础指针和调用击路仪的机制
- 为什么写入临时字符串流对象只打印对象地址
- 依赖静态对象地址安全吗
- 获取引用指向的对象地址
- 传递对象地址时"Address expression must be an lvalue or a function designator"
- 在C++中存储对象地址的数据结构
- 从函数初始化对象地址
- 使用reintepret_cast解释对象地址
- 为什么基类指针总是指向基类,即使它持有派生类对象地址
- 是否可以将堆栈对象地址赋给placement new
- <<运算符重载不起作用;仍在打印对象地址
- 关于返回对象地址的困惑