求助 this指针在类中的作用?

5w 2003-03-17 07:04:28
this指针在类中的作用?用类创建对象,每个对象都有一个存储空间吗?其中存放的是类中定义变量和方法的拷贝吗?
...全文
52 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aka2006 2003-03-17
  • 打赏
  • 举报
回复
//this指针在类中的作用?
class A{
func1(virtual_var)
{
member_var=virtual_var
}
protect:
member_var;
};
A a1;
A a2;
a1.func(val1);
a2.func(val2);//两者都要修改member_var,为不至于混淆,用隐含的this指针分别表示
val1是this->member_var(a1)的
val2是this->member_var(a2)的

//用类创建对象,每个对象都有一个存储空间吗?
在创建的同时,调用相应的构造函数,或者默认构造函数分配存储空间。

//其中存放的是类中定义变量和方法的拷贝吗?
应该不是。
amstrongest 2003-03-17
  • 打赏
  • 举报
回复
return *this;
diabloqin 2003-03-17
  • 打赏
  • 举报
回复
gz
sailor_Song 2003-03-17
  • 打赏
  • 举报
回复
学习ing
TechSupport 2003-03-17
  • 打赏
  • 举报
回复
this = “我”

用得广不广?
bugfree 2003-03-17
  • 打赏
  • 举报
回复
"this" is the address of current obj.
>>when you will use it?
1. when do self assignment checking
2. call member var or member-func (default does not appear)
3. other case when you return the current obj reference
using " return *this;"
4. there are many other case's you will use it.
DaNiao 2003-03-17
  • 打赏
  • 举报
回复
非虚函数是静态编链的
虚函数要通过著名的vtable(一个类只有一个,每个有虚函数的类的对象都有一个指向
该类的vtable的指针)

变量是直接存在对象的存储空间里的

按ISO标准每个对象都会有size

class a
{
};

void main()
{
cout<<sizeof(a);
}

你会看到1,而不是0,当然这一个字节里什么都没存
FiLng 2003-03-17
  • 打赏
  • 举报
回复
每个对象都有一个存储空间,其中存放的是类中定义变量和访问方法以及支持继承,多态等机制的必要的数据。一般的成员函数其实就是全局函数,比如:
class A
{
int _a;
public:
void x(int a)
{
_a=a;
}
};

对A类方法的调用:
A aobj;
int b=2;
aobj.x(b);
被编译器转为
A::x(this,b)
{
this->_a=b;
}
aobj对象的存储空间有_a,这个this指针指向aobj对象的首地址,通过A类不同对象的this指针
就可访问各个对象的数据成员,但都是调用A类定义的void x(int a),当然不同类的相同的void x(int a)会被编译器赋予不同的内部函数名以区别。
建议你看看《The C++ object model》

69,364

社区成员

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

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