C++;java的这个版本。上课

C++;java的这个版本。上课,java,c++,Java,C++,可能重复: java的C++版本是什么?p> 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

可能重复:

java的C++版本是什么?p>

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+++< /P> < P> C++等价。p> 这种操作通常会执行以下操作:

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

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

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

this->name = name;
这建议使用另一种语法:

(*this).name = name;

是的,C++具有等效的<代码>这个< /代码>指针。等效代码为:

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
}
像java一样,这个,但是“->”而不是“.”


我不知道您为什么要将参数命名为相同的名称,但是
是一个指针,因此它需要指针语法。请注意,与Java中一样,
是可选的,只要引用的字段可以明确解析(例如,参数或本地未使用相同的名称定义)。作为答案,删除与Java无关。
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
}