1,this 指针怎么用一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n) 。this->你好!this指针:当调用一个成员函数时,指向产生这个调用(也就是说我的回答你还满意吗~~
2,求Cthis指针详细解释this指针的用处: 一个对象的this指针并不是对象本身的一部分 , 不会影响sizeof(对象)的结果 。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候 , 编译器会自动将对象本身的地址作为一个隐含参数传递给函数 。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参 , 对各成员的访问均通过this进行 。例如,调用date.SetMonth(9) <===> SetMonth(&date, 9),this帮助完成了这一转换 .this指针的使用: 一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n) 。
3,this指针的用法简单来说,这个东西只能在类的成员函数中用, 用法是我的XX,XX表示变量或者函数this->athis->test();this就是指代类对象本身,可以不写当参数与成员变量同名时,可以用this来区分this->a = a;静态成员函数没有this当然有错 因为指针是一个抽象的东东 可以说是指针只是一个名称替代, 没有真实的意义 所以这样用法是错误的 可以这样写 int n = 45; int *p = &n; //让虚拟p指向实际的n cout << *p << endl; 或者可以用c++的动态分配, 为指针分配一个空间来存放数值 int *p = new int; *p = 45; cout << *p << endl; 这样都是可以的, 而如楼主对指针单独操作则不正确了【this指针用法,this 指针怎么用】
4,c的this指针怎么使用有没有详细的资料而原来的指针p的一切属性都没有被修改 。一个函数如果使用了指针作为形参,参考资料:[转]这篇文章摘自网易广州社区的C语言版精华区在调用类的成员函数时 , 使用this指针来指向调用这个函数的当前对象,例如有这样一个类:class Xpublic:void fun(){cout<}; 假如在主函数中这样定义: X a,b; cout<<"&a:"<<(&a)<<" a.fun():"; a.fun(); cout<<"&b:"<<(&b)<<" b.fun():"; b.fun(); 运行的话会发现this的值就是当前调用这个函数的对象的地址this指针表示当前对象 。class fish:int eye;int foot;void eat();}你可以这样用,this.eye=xxx;this.foot=xxx;调用方法:this->eat();this 代表一个当前对象,就相当于和这个对象是相等的 , 只是意义不同 。你可以使用类的对象调用类的成员,也可以使用这个THIS指针调用这个类的对象 。这位仁兄说的很不错 。this指针表示当前对象 。class fish:int eye;int foot;void eat();}你可以这样用,this.eye=xxx;this.foot=xxx;调用方法:this->eat();this指针在类的非静态成员函数里面才能使用,main函数里是不能使用的!5,Cthis指针的详细解析在前面曾经提到过: 每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象 , 则有n组同样大小的空间以存放n个对象中的数据成员 。但是,不同对象都调用同一个函数代码段 。那么 , 当不同对象的成员函数引用数据成员时,怎么能保证引用的是所指定的对象的数据成员呢?假如,对于例9.6程序中定义的Box类,定义了3个同类对象a,b,c 。如果有a.volume( ),应该是引用对象a中的height,width和length,计算出长方体a的体积 。如果有b.volume( ),应该是引用对象b中的height,width和length,计算出长方体b的体积 。而现今都用同一个函数段,系统怎样使它分别引用a或b中的数据成员呢?在每一个成员函数中都包含一个特殊的指针 , 这个指针的名字是固定的,称为this指针 。它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址 。例如,当调用成员函数a.volume时,编译系统就把对象a的起始地址赋给this指针,于是在成员函数引用数据成员时,就按照this的指向找到对象a的数据成员 。例如volume函数要计算height*width*length的值 , 实际上是执行:(this->height)*(this->width)*(this->length)由于当前this指向a,因此相当于执行:(a.height)*(a.width)*( a.length)这就计算出长方体a的体积 。同样如果有b.volume( ) ,编译系统就把对象b的起始地址赋给成员函数volume的this指针,显然计算出来的是长方体b的体积 。this指针是隐式使用的,它是作为参数被传递给成员函数的 。本来,成员函数volume的定义如下:int Box::volume( )return (height*width*length);}C++把它处理为int Box::volume(Box *this)return (this->height * this->width * this->length);}即在成员函数的形参表列中增加一个this指针 。在调用该成员函数时,实际上是用以下方式调用的:a.volume(&a);将对象a的地址传给形参this指针 。然后按this的指向去引用其他成员 。需要说明: 这些都是编译系统自动实现的,编程序者不必人为地在形参中增加this指针,也不必将对象a的地址传给this指针 。在需要时也可以显式地使用this指针 。例如在Box类的volume函数中,下面两种表示方法都是合法的、相互等价的 。return (height * width * length); //隐含使用this指针return (this->height * this->width * this->length); //显式使用this指针可以用*this表示被调用的成员函数所在的对象,*this就是this所指向的对象,即当前的对象 。例如在成员函数a.volume( )的函数体中,如果出现*this,它就是本对象a 。上面的return语句也可写成return((*this).height * (*this).width * (*this).length);注意*this两侧的括号不能省略,不能写成*this.height 。所谓“调用对象a的成员函数f”,实际上是在调用成员函数f时使this指针指向对象a , 从而访问对象a的成员 。在使用“调用对象a的成员函数f”时,应当对它的含义有正确的理解 。
推荐阅读
- 苹果14如何快速截图,苹果手机如何截屏
- mysql漏洞复现 mysql高危漏洞
- 微信数据分析工具,微信视频号怎么看数据分析
- mysql 获取时间 mysql下截取时间戳
- mysql索引算法有哪些 mysql索引的机制
- mysql多表联动 mysql多表内连接
- mysql怎么导出db文件 mysql输出db文件
- 如何有效维护云服务器? 云服务器需要怎么维护
- 如何开启指定端口 开启指定端口的redis