c++中this 指针的问题

c++中this 指针的问题,第1张

&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指针的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10179058.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存