社区
C++ 语言
帖子详情
this指针的使用范围?
otianna
2009-02-23 01:10:48
书上的解释是指向一个类的一个对象,且这个对象的某个成员函数正在调用。
想问的是:在哪种情况下我必须要用这个指针呢?希望有实例,谢谢
...全文
459
33
打赏
收藏
this指针的使用范围?
书上的解释是指向一个类的一个对象,且这个对象的某个成员函数正在调用。 想问的是:在哪种情况下我必须要用这个指针呢?希望有实例,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
2小时精通C++智能
指针
学员也可以
使用
Visual Studio 2017。 教程中从最简单的例子入手,覆盖智能
指针
的常用技术点,并穿插实例程序。本篇讲解的技术点包括:共享
指针
、弱
指针
、唯一
指针
、自动
指针
等。本课程中涉及的所有软件和示例源码,...
C++ this
指针
类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个
指针
:this
指针
,通过this
指针
来访问自己的地址。 注意: this
指针
并不是对象的一部分,...
C++虚函数和成员函数内存 this
指针
问题
发现有好多人this
指针
的本质有错误的认识,估计不少人一说起this
指针
,脑袋立即反应出:那个类里
使用
的this
指针
,那么这个
指针
就是那个类类型咯。其实事实根本不是这样子的,这里修正对this
指针
的错误理解: 首先...
this
指针
详解
我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的...this
指针
的类型取决于
使用
this
指针
的成员函数类型以及对...
C++this
指针
操作
在这里总结一下this
指针
的相关知识点。 首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的...注:this
指针
并不是对象的一部分,this
指针
所占的内存大小是不会反应在sizeof操作符上的。th...
C++ 语言
64,660
社区成员
250,515
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章