this 指针是read only吗?

「已注销」 2013-12-13 12:18:54
面试宝典的题,怀疑答案写错了
选项D.this pointer is not counted for calculating the size of the object
E.this 指针是read only
答案写的是E是对的,但是解释中证明D对。所以呢?
...全文
151 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrankHB1989 2013-12-13
  • 打赏
  • 举报
回复
引用 2 楼 yulitingfeng 的回复:
一个对象的this指针并不是对象本身的一部分,不会影响sizeof的结果。this指针是类的一个自动生成、自动隐藏的私有成员,存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。说他是只读是正确的。
补习什么叫“成员”去。
FrankHB1989 2013-12-13
  • 打赏
  • 举报
回复
this是rvalue,根本上就只能read,你要非认为read only那就read only吧。
derekrose 2013-12-13
  • 打赏
  • 举报
回复
说点题外话,面试宝典这种书,面试前两天翻翻就行了 不能当做学习用书
lm_whales 2013-12-13
  • 打赏
  • 举报
回复
1) this指针和对象无关,不是对象的一部分。 只是在非静态成员函数的调用过程中,隐式传递的一个参数,是调用该函数的那个对象的地址。 在该函数调用过程中 this指针是不可修改的,指针的值,也是不会改变的。 对于成员函数的定义来数,是该函数的隐藏的第一个参数。 实际参数表里的参数,是更后面的参数。 其他地方不存在this指针。 也不是类的成员变量,类中一般没有这个数据。 2) D,E 只怕都是对的。 3)代码事例:
 class A{

  int x;
public :
   int getX()const{  
     //访问函数,隐藏参数 this,是函数的第一个参数; 
     //定义形式为 const A *const this; 
       return this->x;
   } 
   void setX(int val){
     // 修改函数,隐藏参数 this,是函数的第一个参数;
     // 定义形式为 A *const this; 
         this->x =val;
   };
};

int main{
  A a;
  int v=10;
  v = a.getX(); // this == &a;
  a.setX(v);    // this == &a;

  A &r =a; 
  v = r.getX(); // this == &r == &a;
  r.setX(v);    // this == &r == &a;

  A *p = &a;   
  v = p->getX(); // this == p == &a;
  p->setX(v);    // this == p == &a;  
  return 0;     
}
赵4老师 2013-12-13
  • 打赏
  • 举报
回复
上联:说你行你就行不行也行 下联:说不行就不行行也不行 横批:不服不行
buyong 2013-12-13
  • 打赏
  • 举报
回复
面试就是对人的摧残
xiaohuh421 2013-12-13
  • 打赏
  • 举报
回复
this是一个指针常量.
yulitingfeng 2013-12-13
  • 打赏
  • 举报
回复
一个对象的this指针并不是对象本身的一部分,不会影响sizeof的结果。this指针是类的一个自动生成、自动隐藏的私有成员,存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。说他是只读是正确的。

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧