C++中,this指针可以修改吗?

 我来答
她是我的小太阳
高粉答主

推荐于2018-04-18 · 醉心答题,欢迎关注
知道顶级答主
回答量:5.1万
采纳率:83%
帮助的人:8534万
展开全部
  举个例子:
  int i;
  如上,随便定义一个变量,现在,能改变变量i的地址么。原则上,从高级语言的角度来说,改变i的地址是不可能的,因为i的地址是编译器设定的。同样,如果i是某个类的对象,一样不能改变i的地址,而this指针就是对象地址的别名,因此通常无法改变。说“通常”是指在C++语言这个层面上是无法改变的,除非对C++编译器编译完的目标代码进行修改。另外,如果想改变this的指向,也不需要直接修改this,而只需要将this加上某个偏移值就行了,比如(this+12)->funname();但是要考虑到指针的安全性问题。
  this指针的用处:一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。   例如,调用date.SetMonth(9) <===> SetMonth(&date, 9),this帮助完成了这一转换 .
  
雷迪呱呱_T0053
2015-09-10 · 超过79用户采纳过TA的回答
知道答主
回答量:134
采纳率:0%
帮助的人:176万
展开全部
有重载的用重载的operator=,没重载的就是内存复制。delete要自己弄,复制构造函数、重载的赋值操作符以及虚析构函数都属于复制控制,这个在C++ Primer里有。外面有const的this不能改,像这里没有的应该可以,只要模板不是const就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式