如果我有以下基本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语句?他们是一样的吗?或者它们是一样的吗?
答案 0 :(得分:5)
他们是一样的。它打印的rect地址与对象的地址相同。 Rect在堆栈上,因此整个对象也是如此。
答案 1 :(得分:3)
如果你的意思是什么,就没有类别的地址这样的东西? &amp; CRectangle不存在,只存在类(&amp; rect)实例的地址。 Class定义本身没有占用内存。
答案 2 :(得分:0)
变量rect
是CRectablge
的对象,因此在这种情况下,变量的地址与对象之间没有区别。
答案 3 :(得分:0)
rect
只是堆栈中对象的标识符。在这种情况下,CRectangle
。
通过调用&rect
,您将获得对象所在的堆栈中的地址。