"this"是否也适应函数指针?

Does "this" also adapt to function pointers?

本文关键字:函数 指针 this 是否      更新时间:2023-10-16

Java有一个允许方法通过"this()"引用调用自身的构造。我一时想不起这个约定的名称。EDIT:被称为构造函数委托,如下所述。将只在构造函数上工作,而不是一般的方法,因为我错了。

c++是否提供了指向自身的引用,而不是,特别是本身?

例如,我有一个函数有多个重载之类的。

void DoesSomething(){
    this->(default1, default2);
}
void DoesSomething(int myValue1){
    this->(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
    //Do stuff
}

您需要显式指定函数名:

void DoesSomething(){
    this->DoesSomething(default1, default2);
}
void DoesSomething(int myValue1){
    this->DoesSomething(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
    //Do stuff
}

不像你描述的那样,通过上下文对具有给定名称的其他函数有隐式知识。

注意,在Java中,这只适用于构造函数,称为构造函数链接。它一般不会为方法处理这个问题。

c++ 11也增加了对相同概念的支持(作为委托构造函数),尽管语法与Java、c#和其他具有此概念的语言不同。

对于构造函数,在c++ 11中可以这样写:

SomeType() : SomeType(42) {}
SomeType(int arg)
{
   // ...

这段代码需要修改为:

void DoesSomething(){
    this->DoesSomething(default1, default2);
}
void DoesSomething(int myValue1){
    this->DoesSomething(myValue1, default2);
}
void DoesSomething(int myValue1, int myValue2){
    //Do stuff
}

或to

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

this指向被调用成员函数的对象。我看到它最常用于当一个函数需要返回对自身的引用时,例如,operator()=;当重载此操作符时,您经常还会看到类似以下内容,以防止自赋值

foo& foo::operator=(const foo& rhs ){
  if (  this != &rhs ) { 
      //do something
  }
  return *this;
}
我想这回答了你的问题??

参考:http://msdn.microsoft.com/en-us/library/y0dddwwd.aspx