首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

是不是通过this指针就能取得本对象地址?解决方案

2012-03-20 
是不是通过this指针就能取得本对象地址?我要取得本对象地址就一个全局变量里面,是不是通过this指针就能取

是不是通过this指针就能取得本对象地址?
我要取得本对象地址就一个全局变量里面,是不是通过this指针就能取得?

[解决办法]
是,this不是全局变量,是个隐含的参数
[解决办法]
a = this; <- 如果a是那个全局变量的话,不过一般情况下这么写都的程序逻辑都不会太好...
[解决办法]
this 是通过lea ecx , 你的对象 


 进入的,然后调用成员函数 _thiscall函数调用约定



[解决办法]
代码没问题

不过楼主,你觉得你提供的代码是不是可以这样改一下:

cls1 *lpObject;

lpObject=&你的对象

不需要提供成员函数,而且对象要保证生命期



探讨
...
extern cls1 *lpObject;
...
cls1::GetObject(){
lpObject=this;
}
...

main(){
...
cls1 obj1;
lpObject=obj1.GetObject();
...
}

这样行不行?

[解决办法]
对象地址就是this,你的写法本身没问题,但是在成员函数里把自己的地址赋值给全局变量不是一种很好的行为。
[解决办法]
探讨

...
extern cls1 *lpObject;
...
cls1::GetObject(){
lpObject=this;
}
...

main(){
...
cls1 obj1;
lpObject=obj1.GetObject();
...
}

这样行不行?

[解决办法]
探讨

能不能这样?

cls1::GetObject(){
lpObject=&amp;obj1;
}

[解决办法]
Q:我要在对象里面取对象地址。还有没有其他方法?
ans:一般是通过this指针,因为在函数定义而未被实例化时,类并没有一个具体的地址;因此,在C++中是通过this指针标识每个被实例化的类
[解决办法]
探讨

main(){
...
cls1 obj1;
obj1.GetObject();
...
}

[解决办法]
如果全局变量的话,建议用单体对象啦

热点排行