-6

C++ チュートリアル [ http://www.cplusplus.com/doc/tutorial/classes2/の「キーワード this」の下] を調べていますが、メンバー関数のパラメーターに「&」が含まれている理由について混乱しています。

コード:

#include "stdafx.h"
#include <iostream>

class CDummy {
public:
    int isitme( CDummy& param );    // <-- Having trouble understanding this
};

int CDummy::isitme( CDummy& param )    // <-- Having trouble understanding this
{
    if( &param == this) 
        return true;
    else
        return false;
}

int main ()
{
    CDummy a;
    CDummy *b = &a;
    if ( b->isitme(a) )
        std::cout<< "yes, &a is b";

    return 0;   
}

なぜ機能しint isitme( CDummy& param)、機能しないのint isitme( CDummy param )ですか? また、関数の実装ではif( &param == this )&param関数宣言がint isitme( CDummy param ).

4

2 に答える 2

1

これは、C のように明示的なポインターを使用するのではなく、C++ 左辺値参照言語機能を使用して、参照によって左辺値を関数に渡すことです。参照はオブジェクトにバインドする必要があるため、NULL値を持つことはできません...参照-type 変数は、基本的にそれが参照するオブジェクトに別名を付けます (つまり、ポインターが必要とするようなユーザーによる明示的な逆参照はありません)。

于 2013-06-19T02:30:29.200 に答える