"this"是否也适应函数指针?
Does "this" also adapt to function pointers?
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
相关文章:
- QMetaObject invokeMethod的基于函数指针的语法
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- c++r值引用应用于函数指针
- 模板函数指针和lambda
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 带有类的函数指针
- () 函子后面的括号,而不是函数指针?
- 全局作用域中函数指针的赋值
- 使用"Task"函数指针队列定义作业管理器
- 将成员函数指针作为参数传递给模板方法
- 如何创建对象函数指针C++映射?
- 匹配函数指针作为模板参数?
- 通过函数指针定义类范围之外的方法
- 存储在类中的函数指针
- C++从函数指针数组调用函数
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 整数键映射到头文件中的成员函数指针
- 从类成员函数到类 C 函数指针的转换
- 如何将内联匿名函数分配给C++函数指针
- 将字符缓冲区强制转换为函数指针