如何在C++中打印对象的地址

How do you print the address of an object in C++?

本文关键字:对象 地址 打印 C++      更新时间:2023-10-16

如果我有以下基本的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)的一个实例的地址。 类定义本身不占用内存。

变量rectCRectablge的对象,所以在这种情况下变量的地址和对象之间没有区别。

rect只是堆栈中对象的标识符。在本例中,CRectangle 的实例。

通过调用 &rect ,您将在堆栈中获取对象所在的地址。