这个java的C ++版本。在课堂上

时间:2013-01-06 07:39:18

标签: java c++

  

可能重复:
  C++ equivalent to Java this

这是什么java的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 个答案:

答案 0 :(得分:5)

C ++相当于Java,如下所示:

this->name = name;

post提出了另一种语法:

(*this).name = name;

答案 1 :(得分:2)

C ++等价物是the this pointer

this->name = name;

这种操作更常见的做法如下:

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

其中成员变量以下划线为后缀,参数由const引用传入(不复制string的值)。这里没有歧义,并且不需要this指针。

答案 2 :(得分: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
}

答案 3 :(得分:0)

喜欢java,这个,但是“ - >”代替 ”。”;