标题:this的使用
只看楼主
换空依晨
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2013-9-13
结帖率:30.77%
 问题点数:0 回复次数:7 
this的使用
#include"iostream"
using namespace std;
class myclass
{
public :
    myclass(int a,int b,int c);
    static void getsum();
private:
    int a,b,c;
    static int sum;

};
int myclass::sum=0;
myclass::myclass(int a,int b,int c)
{
this->a=a;
this->b=b;


this->c=c;
sum+=a+b+c;
}
void myclass ::getsum()
{
//cout<<a<<endl;//
cout<<"sum="<<sum<<endl;
}
void main()
{
myclass m(1,2,3);
m.getsum();
myclass n(4,5,6);
n.getsum();
myclass::getsum();


}
this->a=a;
this->b=b;

this->c=c;这三句是什么意思啊
搜索更多相关主题的帖子: private include public 
2014-03-06 13:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
在這裏this是多餘的,默認就有this,不需自己寫出來。this就是具體創建這個的一個對象實例時,它的a、b、c,注意:不同的實例對象各有各的a、b、c!

授人以渔,不授人以鱼。
2014-03-06 14:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
不是多余的,因为 a 是函数参数列表中的 a,所以必须加 this->a。
2014-03-06 15:28
zj496884794
Rank: 2
等 级:论坛游民
帖 子:3
专家分:14
注 册:2010-3-7
得分:0 
“=”右边的abc是你给成员函数传递的参数,等号左边的abc是你的成员变量,加上this是指明了等号左边的成员变量abc到底是谁的abc,不加this也可以是因为编译器会给你加上那个缺省的this
2014-03-06 15:46
换空依晨
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2013-9-13
得分:0 
回复 4楼 zj496884794
this 是不是每个成员函数都有的啊 怎么用的?
2014-03-06 16:01
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:0 
它指当前一切函数或者结构的自身指针,每个函数都有


http://baike.baidu.com/link?url=e1n5-Uv-LkGB5lYMKzGTukjiOB8r02qwHDSC8RI9Mu7UPY0ZgqEBcdhiOTIIJ_XGBuBHZ7eJ-1Z9v0jPy7EohK
2014-03-06 20:08
三色贝壳
Rank: 2
来 自:四川
等 级:论坛游民
威 望:1
帖 子:6
专家分:15
注 册:2014-3-5
得分:0 
个人觉得主函数中m.getsum();n.getsum();有点不对劲,因为static void getsum();getsum()是静态函数,静态数据或函数是属于整个类而不是单独哪个对象的,需用类名来限制,大家觉得聂?
2014-03-11 13:23
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
得分:0 
以下是引用三色贝壳在2014-3-11 13:23:19的发言:

个人觉得主函数中m.getsum();n.getsum();有点不对劲,因为static void getsum();getsum()是静态函数,静态数据或函数是属于整个类而不是单独哪个对象的,需用类名来限制,大家觉得聂?

你说的有一半对了,虽然整个思路是错的。
使用this其实是为了和全局区分。根据不同编译器会有不同的结论。比如你复制粘贴别人的代码,如果你的全局变量或函数带有该类结构相同名字,结果怎么预知?你确定是在操作内部成员还是其它的东西。
你要用vs的话可新建clr窗口工程,里面结构全是this->在定义,仔细看成员,发现他们很容易会和外部冲突
2014-03-18 17:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-428098-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.068781 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved