0

重複の可能性:
Java this に相当する C++

Java の this の C++ バージョンは何ですか。:

class javaObj{

private String name;

public void setName(String name)
{
    this.name = name;
}
}

C ++で機能することがわかった唯一のものは次のとおりです。

class cppObj
{
private:
    string name;

public:
    void setName(string name);
};

void cppObj::setName(string name)
{
    cppObj::name = name;
}

cppObj:: を使用する必要がありますか、またはこれがあります。c ++と同等ですか?

4

4 に答える 4

5

Java のこれに相当する C++ は次のとおりです。

this->name = name;

この投稿では、代替構文を提案しています。

(*this).name = name;
于 2013-01-06T07:40:42.160 に答える
2

C++ に相当するのはポインタthisです

this->name = name;

この種の操作では、次のことを行うのがより一般的です。

void cppObj::setName(const string& name)
{
    name_ = name;
}

メンバー変数にはアンダースコアが付けられ、引数はconst参照によって渡されます (の値をコピーするのではありませんstring)。ここにはあいまいさがなく、thisポインタは必要ありません。

于 2013-01-06T07:40:26.830 に答える
1

はい、C++ には同等のthisポインターがあります。同等のコードは次のとおりです。

void cppObj::setName(string name)
{
    this->name = name;
}

ただし、コードを強化できます。

class cppObj
{
private:
    std::string name_;   // better naming style to distinguish class member with other variables

public:
    void setName(const std::string& name);  // pass by reference to elide the unnecessary copy
};

void cppObj::setName(const std::string& name)
{
    name_ = name;  // not necessary to have to use `this->` pointer syntax
}
于 2013-01-06T07:42:09.403 に答える
0

これは Java と同様ですが、「.」ではなく「->」です。

于 2013-01-06T07:46:02.587 に答える