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;
}

最後のprintステートメントは、変数rectのアドレスまたはオブジェクトのアドレスを出力していますか?彼らは同じですか?またはそれらは同じですか?

4

4 に答える 4

4

それらは同じです。オブジェクトのアドレスと同じrectのアドレスを出力しています。Rect はスタック上にあるため、オブジェクト全体も同様です。

于 2012-04-10T15:17:10.390 に答える
3

それがあなたの言いたいことなら、クラスのアドレスのようなものはありませんか? &CRectangle は存在しません。クラスのインスタンスのアドレス (&rect) のみが存在します。クラス定義自体によってメモリが占​​有されることはありません。

于 2012-04-10T15:29:20.213 に答える
0

rectスタック内のオブジェクトの単なる識別子です。この場合、 のインスタンスですCRectangle

を呼び出すと&rect、オブジェクトが存在するスタック内のアドレスを取得できます。

于 2012-04-10T15:30:07.233 に答える
0

変数rectは のオブジェクトなCRectablgeので、この場合、変数のアドレスとオブジェクトのアドレスに違いはありません。

于 2012-04-10T15:18:23.853 に答える