Java有一个允许方法通过" this()"来调用自身的构造。参考。 此公约的名称目前让我失望。
编辑:如下所述,称为构造函数委派。只会对构造函数起作用,而不是我误解的方法。
C ++是否具有所有的指针优点提供了对自身的引用,但不是具体本身?
例如,我有一个具有多个重载等功能。
void DoesSomething(){
this->(default1, default2);
}
void DoesSomething(int myValue1){
this->(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
//Do stuff
}
答案 0 :(得分:2)
您需要明确指定函数名称:
void DoesSomething(){
this->DoesSomething(default1, default2);
}
void DoesSomething(int myValue1){
this->DoesSomething(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
//Do stuff
}
对于具有给定名称的上下文的其他函数,没有隐含的知识,就像您正在描述的那样。
请注意,在Java中,这仅适用于构造函数,并且称为Constructor Chaining。一般来说,它不会处理这种方法。
C ++ 11还增加了对同一概念的支持(如delegating constructors),尽管语法与Java,C#和其他使用此概念的语言不同。
对于构造函数,在C ++ 11中,您可以编写:
SomeType() : SomeType(42) {}
SomeType(int arg)
{
// ...
答案 1 :(得分:1)
该代码需要修改为:
void DoesSomething(){
this->DoesSomething(default1, default2);
}
void DoesSomething(int myValue1){
this->DoesSomething(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
//Do stuff
}
或
void DoesSomething(){
DoesSomething(default1, default2);
}
void DoesSomething(int myValue1){
DoesSomething(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
//Do stuff
}
因为代码中没有真正需要明确说明'this'。 c ++中存在的东西称为函数对象,如下所述:http://www.cprogramming.com/tutorial/functors-function-objects-in-c++.html
答案 2 :(得分:0)
this
指向调用成员函数的对象。我已经看到它最常用于函数需要返回对自身的引用时,例如operator()=
;当重载此运算符时,您通常还会看到类似以下内容以防止自我赋值
foo& foo::operator=(const foo& rhs ){
if ( this != &rhs ) {
//do something
}
return *this;
}
我认为这回答了你的问题??