求C++this指针详细解释

求C++this指针详细解释,第1张

this指针的用处:

一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。 例如,调用dateSetMonth(9) <===> SetMonth(&date, 9),this帮助完成了这一转换

this指针的使用:

一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。

this指针的作用是()。

A保证基类公有成员在子类中可以被访问

B保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码

C保证基类保护成员在子类中可以被访问

D保证基类私有成员在子类中可以被访问

正确答案:B

因为你写错了,看注释

#include<iostream>

using namespace std;

class A

{

public:

void display()

{

cout<<this<<endl;

}

};

int main()

{

A a;

adisplay(); // 不要cout,直接调用adisplay();

cout<<&a<<endl;

return 0;

}

this就是一个语法而已,表示对象的指针。就比如某人叫做张三和李四都没啥区别吧,只有知道是某个人而已。严格来说既不是类,也不是对象成员,也不属于成员函数。this指针就是this指针。只是写法和那些有点相似而已。知道它哪些地方有哪些语法与作用就是了

class A {

public:

bool comp(A p) {

return p == this;

}

};

A a;

acomp(&a);//返回true

this就是C扩展成C++最关键的因素,也就是说C++可以先看成先翻译成C。反过来C++功能其实等价于C。

调用成员函数其实都是调用的this->func();

只是有时候可以省略而已

但是C++翻译成C就是classA_func_(this, )

这个没啥难理解的吧,这中间的任何 *** 作都是C++编译的过程,如果真想追根究底,就可以自己学编译原理,自己写个简单的语法编译器以及虚拟机

this指针指向被调用函数的对象

Cat obj ,obj2;

obj = obj2;//这里obj调用了=运算符;

objoperator =(obj2);

在编译器中编译的过程中,obj对象作为第一个参数传递给函数

objoperator = (obj,obj2);

其函数内部的this指针指向obj对象,即指向obj对象的地址

以上就是关于求C++this指针详细解释全部的内容,包括:求C++this指针详细解释、this指针的作用是()。、求问c++中,如何输出this指针的地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存