这是什么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 ++?
答案 0 :(得分:5)
答案 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,这个,但是“ - >”代替 ”。”;