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指针的地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)