注册 登录
编程论坛 C++教室

this的使用

换空依晨 发布于 2014-03-06 13:12, 613 次点击
#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;这三句是什么意思啊
7 回复
#2
TonyDeng2014-03-06 14:23
在這裏this是多餘的,默認就有this,不需自己寫出來。this就是具體創建這個的一個對象實例時,它的a、b、c,注意:不同的實例對象各有各的a、b、c!
#3
rjsp2014-03-06 15:28
不是多余的,因为 a 是函数参数列表中的 a,所以必须加 this->a。
#4
zj4968847942014-03-06 15:46
“=”右边的abc是你给成员函数传递的参数,等号左边的abc是你的成员变量,加上this是指明了等号左边的成员变量abc到底是谁的abc,不加this也可以是因为编译器会给你加上那个缺省的this
#5
换空依晨2014-03-06 16:01
回复 4楼 zj496884794
this 是不是每个成员函数都有的啊 怎么用的?
#6
天使梦魔2014-03-06 20:08
它指当前一切函数或者结构的自身指针,每个函数都有


http://baike.baidu.com/link?url=e1n5-Uv-LkGB5lYMKzGTukjiOB8r02qwHDSC8RI9Mu7UPY0ZgqEBcdhiOTIIJ_XGBuBHZ7eJ-1Z9v0jPy7EohK
#7
三色贝壳2014-03-11 13:23
个人觉得主函数中m.getsum();n.getsum();有点不对劲,因为static void getsum();getsum()是静态函数,静态数据或函数是属于整个类而不是单独哪个对象的,需用类名来限制,大家觉得聂?
#8
天使梦魔2014-03-18 17:03
以下是引用三色贝壳在2014-3-11 13:23:19的发言:

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

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