不太理解你的意思。不是不说是函数还没有运行完毕就去调用这个函数?你可以这样理解,有一个函数是qqq(int a),内部又调用了一个函数是aaai(int a),你把它看成是不同的函数应该比较好理解,只不过他们的功能相同。对于初学者,递归确实理解起来有些困难,不过当你了解了他们的调用关系后就没有什么特殊的,它们跟一般的函数调用一样的。至于this,在面向对象的语言中,由于要在每个实例方法中得到自身的状态,它必须需要一个指针指向保存状态的数据地址,所以就有了一个this指针。对于编译后的方法,其实是一个传递了this指针的一般的函数。如
void Foo(int a)
可能编译成
void Foo(T* const this,int a)
void Foo(int a)
可能编译成
void Foo(T* const this,int a)
解决方案 »
- TcpClient和NetworkStream的疑问
- XmlTextWriter tr = new XmlTextWriter("<img src="">");
- C#.Net如何检测是否存在无线网卡?
- SqlCommand.ExecuteNonQuery()的困惑
- XML的读取速度问题?=================
- 怎么获取一个窗体的句柄?
- 关与水晶报表子报表50分没人回答 再来100分看有人回答不?
- Windows窗体的MonthCalendar控件,如何获取当前用户选择的日期?
- 【调查】做DOTNET的项目开发时,在使用windows操作系统的文件系统的时候,特别不爽,有同感的进来领分
- winform如何给动态创建的文本框赋值和取值?
- 小弟有一难道请教! ErrorCode -Void CheckError(System.Data.OracleClient.OciErrorHandle, Int32
- 模式窗体棘手问题!!
public int qqq(int a)
{
if (a>1)
{
result=a*this.qqq(a-1);
return result;
}
else
{
return 0;
}
}
一个成员函数,编译后,会自动把调用者的实例作为this传给函数,c++是这么做的
类是
class a{
void b(int c)
{}
}
a a1=new a();
a1.b(3)
编译后应该为
b( a1 , 3 )