
c++中的this指针什么时候必须用
看了好多帖子,都解释了this怎么用,但我感觉都没必要啊,比如:#include<iostream>usingnamespacestd;classa{private:in...
看了好多帖子,都解释了this怎么用,但我感觉都没必要啊,比如:
#include<iostream>
using namespace std;
class a
{
private:
int x;
public:
a(int y){x=y;}
void fun(); //让类a的私有成员+1
};//与问题无关的函数省略了
void a::fun()
{
this->x=x+1; //此处直接用x=x+1运行结果完全相同
}
int main()
{
a A(5);
A.dis();
A.fun();
A.dis();
return 0;
}
运行结果:
5
6
求教各位高手,什么时候非用this不可啊??? 展开
#include<iostream>
using namespace std;
class a
{
private:
int x;
public:
a(int y){x=y;}
void fun(); //让类a的私有成员+1
};//与问题无关的函数省略了
void a::fun()
{
this->x=x+1; //此处直接用x=x+1运行结果完全相同
}
int main()
{
a A(5);
A.dis();
A.fun();
A.dis();
return 0;
}
运行结果:
5
6
求教各位高手,什么时候非用this不可啊??? 展开
3个回答
展开全部
防止命名冲突时,还有想将对象本身的指针或者引用给别的函数时
return this; // 返回对象本身的指针
return *this; // 返回对象本身的引用
void a::fun()
{
this->x=x+1; //此处直接用x=x+1运行结果完全相同
}
这样没有命名冲突,定义个fun(int x)再试试吧
return this; // 返回对象本身的指针
return *this; // 返回对象本身的引用
void a::fun()
{
this->x=x+1; //此处直接用x=x+1运行结果完全相同
}
这样没有命名冲突,定义个fun(int x)再试试吧
推荐于2016-03-06 · 知道合伙人数码行家

知道合伙人数码行家
采纳数:25897
获赞数:1464998
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注

展开全部
参考代码如下:
class obj
{
private:
int var;
public
obj(int var)
{
this->var=var;//这里参数var和私有成员同名,如果不用this无法区分
}
};
class obj
{
private:
int var;
public
obj(int var)
{
this->var=var;//这里参数var和私有成员同名,如果不用this无法区分
}
};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class A{
int x,y;
void fun(int x,int y)
{this.x=x;
thix.y=y;
}
}
可以防止命名冲突
int x,y;
void fun(int x,int y)
{this.x=x;
thix.y=y;
}
}
可以防止命名冲突
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询