说说this指针

ltcs 2002-06-27 09:47:18
什么意思,简单举例。
...全文
36 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xrbeck 2002-06-27
  • 打赏
  • 举报
回复
讲的都太表面了,要知道用类来定义一个实例,可是里面的函数只有
一份,可是不同的对象CALL一个函数如何知道函数操作的对象是属于谁
的呢,就是this指针。。
比如
class a
{
private:
int i;
public:
...
void show(){cout<<i;}

};
...
a im1;
a im2;
im1.show();im2.show();
因为函数地址只有一个,所以在识别操作的对象i
的时候只能通过this指针,在调用的时候转为this->show(i)
才能正确调用。。。
earthharp 2002-06-27
  • 打赏
  • 举报
回复
自指向指针.
Keanu_Rocky 2002-06-27
  • 打赏
  • 举报
回复
class a
{
public:
print( ) { cout <<i;}
private:
int i;
};
void main( )
{
a b, c;
b.print( ); //this指针是隐含的参数,且this == &b
c.print( ); //this指针是隐含的参数,且this == &c
}

调用非static函数时必须传入this指针,而且this指针指向调用该函数的对象。这是因为非static成员函数是隶属于对象而不是隶属于类的,必须告诉编译系统本次调用时哪一个对象触发的。
hello_wyq 2002-06-27
  • 打赏
  • 举报
回复
赞同楼上的。

wangjingbin1980 2002-06-27
  • 打赏
  • 举报
回复
this指针是系统默认的当前对象指针,只能用在成员函数中,表示当前对象地址!!
wistaria 2002-06-27
  • 打赏
  • 举报
回复
this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子:
void Date::setMonth( int mn )
{
month = mn; // 这三句是等价的
this->month = mn;
(*this).month = mn;
}
宝_爸 2002-06-27
  • 打赏
  • 举报
回复
this指针就是只自己啊。。。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧