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

时间:2012-04-10 15:16:02

标签: 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语句?他们是一样的吗?或者它们是一样的吗?

4 个答案:

答案 0 :(得分:5)

他们是一样的。它打印的rect地址与对象的地址相同。 Rect在堆栈上,因此整个对象也是如此。

答案 1 :(得分:3)

如果你的意思是什么,就没有类别的地址这样的东西? &amp; CRectangle不存在,只存在类(&amp; rect)实例的地址。 Class定义本身没有占用内存。

答案 2 :(得分:0)

变量rectCRectablge的对象,因此在这种情况下,变量的地址与对象之间没有区别。

答案 3 :(得分:0)

rect只是堆栈中对象的标识符。在这种情况下,CRectangle

的实例

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