2013-01-06 31 views
0

可能重复:
C++ equivalent to Java thisjava的这个C++版本。在班

什么是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

我不知道为什么你要来命名参数相同,但'this'是一个指针,所以它需要指针语法。 – chris

+0

请注意,与Java中一样,只要被引用的字段可以明确地解析(例如,参数或本地未使用相同名称定义),'this'就是可选的。 – cdhowie

+0

删除[tag:java]作为答案与Java没有任何关系。 –

回答

2

C++等价物是the this pointer

this->name = name; 

更常用于这种操作执行以下操作:

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

凡成员变量为后缀的下划线和参数通过const引用(不是复制的价值传递string)。这里没有歧义,this指针不是必需的。

5

C++ Java的当量此为如下:

this->name = name; 

post建议了一种替换语法:

(*this).name = name; 
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 
}