&right 这是取right的地址
!= 这是判断
this 这是指代本对象
this本来是个指针,this的星号是取指针指向的内容,
所以,this是整个对象,而this是指向本对象的指针
你还是把指针的概念,好好搞搞懂吧
this指针指向被调用函数的对象
如
Cat
obj
,obj2;
obj
=
obj2;//这里obj调用了=运算符;
即
objoperator
=(obj2);
在编译器中编译的过程中,obj对象作为第一个参数传递给函数
即
objoperator
=
(obj,obj2);
其函数内部的this指针指向obj对象,即指向obj对象的地址
this指针指向被调用函数的对象
如
Cat obj ,obj2;
obj = obj2;//这里obj调用了=运算符;
即
objoperator =(obj2);
在编译器中编译的过程中,obj对象作为第一个参数传递给函数
即
objoperator = (obj,obj2);
其函数内部的this指针指向obj对象,即指向obj对象的地址
this指针是一个隐含于每一个成员函数中的特殊指针。它是一个指向正在被该成员函数 *** 作的对象,也就是要 *** 作该成员函数的对象。
当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含作用this指针。而通常不去显式地使用this指针来引用数据成员。同样也可以使用this来标识调用该成员函数的对象。下面举一例子说明this指针的应用。
#include <iostreamh>
class A
{
public:
A() { a=b=0; }
A(int a, int b) { thisa=a; thisb=b; }
void copy(A &aa); //对象引用作函数参数
void print() {cout<<a<<","<<b<<endl; }
private:
int a, b;
};
void A::copy(A &aa)
{
if (this == &aa) return; //这个this是 *** 作该成员函数的对象的地址,在这里是对象a1的地址
this = aa; //this是 *** 作该成员函数的对象,在这里是对象a1。
//此语句是对象aa赋给a1,也就是aa具有的数据成员的值赋给a1的数据成员
}
void main()
{
A a1, a2(3, 4);
a1copy(a2);
a1print();
}
再具一个C++primer上的例子
class screen
{
screen &move(x,y);
screen& print();
}
screen& screen::move(x,y)
{
return this;
}
这样在使用这个类的时候可以这样用:
screen myscreen;
myscreenmove(50,50)print();
不知道这样说你能了解多少?
this指针就是对象地址常量,this关键词的作用域是对象,在对象成员函数被调用时由系统自动传入(隐含 *** 作),对象成员函数可以直接使用,不需要另外传递;如果外部代码需要访问或传递对象地址,直接取得对象地址即可,且外部程序不能使用this关键词。
以上就是关于c++中this 指针的问题全部的内容,包括:c++中this 指针的问题、this指针的问题~~~~~~、关于易语言this指针的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)