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
}