社区
C++ 语言
帖子详情
this指针的使用范围?
otianna
2009-02-23 01:10:48
书上的解释是指向一个类的一个对象,且这个对象的某个成员函数正在调用。
想问的是:在哪种情况下我必须要用这个指针呢?希望有实例,谢谢
...全文
466
33
打赏
收藏
this指针的使用范围?
书上的解释是指向一个类的一个对象,且这个对象的某个成员函数正在调用。 想问的是:在哪种情况下我必须要用这个指针呢?希望有实例,谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
路人甲三号
2010-12-02
打赏
举报
回复
做个记号.
ch274147182
2010-08-04
打赏
举报
回复
30楼的this味道怪怪的,不过蛮香的!
sendto66
2009-02-24
打赏
举报
回复
mark
netsocket
2009-02-24
打赏
举报
回复
mark
stock888
2009-02-24
打赏
举报
回复
传递参数时
whillcoxdennis
2009-02-24
打赏
举报
回复
#include<iostream>
using namespace std;
class One
{
public:
One()
{
U=0;
V=0;
}
One(int x,int y)
{
U=x;
V=y;
}
void Copy(One &a);
void Print()
{
cout<<U<<"\n"<<V<<endl;
}
private:
int U,V;
};
void One::Copy(One &a)
{
if(this==&a) return;
else *this=a;
}
void main()
{
One one,two(3,4);
one.Print();
one.Copy(two);
one.Print();
}
楼主看看这个例子也许就会明白一些了,调用one的copy函数 从而this指针指向one的,然后实现复制。
希望对lz有所启发~
bfhtian
2009-02-24
打赏
举报
回复
一般在返回对类或结构休的引用时,要返回*this
snowying2008
2009-02-24
打赏
举报
回复
bangdingaaa
snowying2008
2009-02-24
打赏
举报
回复
bangding
snowying2008
2009-02-24
打赏
举报
回复
bangding
herman~~
2009-02-24
打赏
举报
回复
挺多情况下都可以使用
例如:拷贝构造函数,赋值函数等
CTest& CTest::operator=(CTest & rObj)
{
this->i = rObj.i;
return *this;
}
chxy85
2009-02-23
打赏
举报
回复
this很有用的,在VC里面
MooreChen
2009-02-23
打赏
举报
回复
[Quote=引用 14 楼 MooreChen 的回复:]
如果你需要返回对象的地址,例如你重载了取址运算符&,就要用到this(摘自Effective C++):
inline Empty * Empty::operator&() { return this; }
inline const Empty * Empty::operator&() const
{ return this; }
[/Quote]
很多情况下为了实现链式操作,重载运算符也会返回当前对象的引用,也就是*this。
ligang198402
2009-02-23
打赏
举报
回复
刚注册 路过,看看风气
aime99
2009-02-23
打赏
举报
回复
1 取得对象本身 *this
2 指明之用的变量或函数是对象范围内的
lecoo
2009-02-23
打赏
举报
回复
[Quote=引用 9 楼 Dinelgua 的回复:]
拷贝构造函数里一般都需要用到
A& A(const & temp)
{
this.x = temp.x;
return *this;
}
[/Quote]
拷贝构造函数是无返回值的。
Lovegarfield
2009-02-23
打赏
举报
回复
最常用的地方是定义重载操作符时返回return *this
skyygl
2009-02-23
打赏
举报
回复
this指针的含义是指向调用成员函数的对象的指针,从而通过这个this指针就可以把调用成员函数的非静态数据成员和调用对象绑定在一起,举个例子吧:
#include <iostream>
using namespace std;
class Base
{
public:
Base(int temp);
Base& operator+(Base& obj);
friend ostream& operator<<(ostream& os,Base& obj);
private:
int a;
};
Base::Base(int temp)
{
a = temp;
}
Base& Base::operator +(Base &obj)
{
a += obj.a;
return *this;
}
ostream& operator<<(ostream& os,Base& obj)
{
os<<obj.a<<endl;
return os;
}
void main()
{
Base obj1(10);
Base obj2(20);
cout<<obj1+obj2<<endl;
}
上面例子中,重载+运算符里面返回的就是*this,也就是this指针所指向的当前对象。
MooreChen
2009-02-23
打赏
举报
回复
如果你需要返回对象的地址,例如你重载了取址运算符&,就要用到this(摘自Effective C++):
inline Empty * Empty::operator&() { return this; }
inline const Empty * Empty::operator&() const
{ return this; }
passionboy03
2009-02-23
打赏
举报
回复
up
[Quote=引用 3 楼 waizqfor 的回复:]
引用楼主 otianna 的帖子:
书上的解释是指向一个类的一个对象,且这个对象的某个成员函数正在调用。
想问的是:在哪种情况下我必须要用这个指针呢?希望有实例,谢谢
1. this指针的用处:一 个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态 成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没…
[/Quote]
加载更多回复(12)
C++ this
指针
this
指针
引言: 首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个
指针
:this
指针
,通过this
指针
来访问自己的地址。 注意: this
指针
并不是对象的一部分,this
指针
所占的内存大小是不会反应在sizeof操作符上的。this
指针
的类型取决于...
C++知识总结——this
指针
this
指针
2.this
指针
2.1为什么引入this
指针
2.2this
指针
概念2.3this
指针
的
使用
2.4this
指针
问题补充参考 2.this
指针
2.1为什么引入this
指针
当我们在类中定义了一个变量,同时在类成员函数中定义了同一变量时,也就是说变量名重复时,但是我们想
使用
类中定义的变量,这个时候我们该怎么办呢?这个时候就是this
指针
大显身手的时候了。为此我们引入this
指针
的概念。 2.2this
指针
概念 this是指向实例化对象本身时候的一个
指针
,里面存储的是对象本身的地址,通过该
this
指针
小总结
在类的非静态成员函数中,this
指针
是一个指向调用该函数的对象的
指针
。注意,this
指针
是常量
指针
,你不能改变this
指针
使其指向其他对象,但你可以改变它所指向的对象的内容。在C++中,this
指针
只在类的非静态成员函数中存在,而在全局
范围
内,是没有this
指针
的。在C++中,this
指针
是一个隐式的、非静态的成员
指针
,它指向调用它的对象的地址。每个非静态成员函数都含有一个this
指针
,该
指针
在成员函数中用于访问调用它的对象的成员。当成员函数被调用时,this
指针
被自动绑定到调用该函数的对象的地址上。
this
指针
详解
我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个
指针
:this
指针
,通过this
指针
来访问自己的地址。注:this
指针
并不是对象的一部分,this
指针
所占的内存大小是不会反应在sizeof操作符上的。this
指针
的类型取决于
使用
this
指针
的成员函数类型以及对...
C++虚函数和成员函数内存 this
指针
问题
father* p=new son; p->disp(...); 发现有好多人this
指针
的本质有错误的认识,估计不少人一说起this
指针
,脑袋立即反应出:那个类里
使用
的this
指针
,那么这个
指针
就是那个类类型咯。其实事实根本不是这样子的,这里修正对this
指针
的错误理解: 首先,我在这里重申一点:“this”不是变量,是关键字,意味着this
指针
并不是哪个真实存在的符号/储...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章