0

如果我有以下基本 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 的地址还是对象的地址?他们是一样的吗?还是一样?

4

4 回答 4

4

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

于 2012-04-10T15:17:10.390 回答
3

如果这就是您的意思,那么没有类的地址之类的东西?&CRectangle 不存在,仅存在类 (&rect) 实例的地址。类定义本身不占用任何内存。

于 2012-04-10T15:29:20.213 回答
0

变量rect是 的对象CRectablge,所以在这种情况下变量的地址和对象没有区别。

于 2012-04-10T15:18:23.853 回答
0

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

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

于 2012-04-10T15:30:07.233 回答