0

可能重复:
C++ 等价于 Java this

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

C++ 等价于 Java 的 this 如下:

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,this,但是“->”而不是“.”;

于 2013-01-06T07:46:02.587 回答