回答
只需return this
将返回该对象内的对象的地址。
这是一个指针。你不想要这个指针的地址,你想要它自己。
请注意,在虚拟继承(虚拟基类,多重继承)下,这个指针可能在任何时候都不一样(这取决于它指向特定时间点的继承图中的哪个位置) 。
好定义的转换确实存在(dynamic_cast的),这样就没有不能解决的问题,只是说,你不应该盲目相信
MultiplyDerived* d = &someInstance;
Base* b = d;
bool test = ((void*) b) == ((void*) d);
test
不一定总是正确的(我认为它甚至编译器相关,即执行具体发生什么时)。
'this'甚至没有地址,它是一个右值。 – fredoverflow 2011-04-19 05:39:03
@Fred:是的,我想这就是我想要用语言表达的东西。我很高兴我没有真正说过这是一个地址:)(尽管在实践中,我不知道任何编译器,它至少不是某种形式的原始地址;现在为'成员函数指针'...这是一个类似的故事:这不是一个地址,并且它通常也不是这样实现的。 – sehe 2011-04-19 06:25:11
- 1. 如何防止此类实例化?
- 2. 类的实例化
- 3. 在C++中的“类实例化对象和变量内的对象地址”的内存地址
- 4. 实例化单例类
- 5. 实例化es6类
- 6. C++实例化类
- 7. Java类实例化
- 8. 类实例化Java
- 9. 实例化参数化类
- 10. 分配地址的实例化结构(分配分配)
- 11. 从类内实例化类
- 12. 实例化大量的类
- 13. 实例化的抽象类
- 14. 内部类的实例化
- 15. 实例化对象的类
- 16. 显式实例化C++类模板实例化相关基类?
- 17. 类定义实例实例化问题
- 18. 接口实例与类实例化
- 19. 检索给定实例ID的EC2实例的IP地址
- 20. 更改EC2实例的公共IP地址弹性IP地址
- 21. 类型类的多态实例实例化
- 22. 防止其他类的类实例化
- 23. 实例化类不工作
- 24. NameError初始化类实例
- 25. 抽象类实例化
- 26. 实例化一个类 - Python
- 27. 使用NSCODER实例化类
- 28. 检查类被实例化
- 29. 实例化类符号宏
- 30. scala:抽象类实例化?
哈哈,再简单不过了!谢谢!我想我认为那会通过复制返回实例化的类,但这显然没有意义。 – icz 2011-04-18 23:07:35
我想你已经想到了这一点,但你做'this-> function()'所以'this'代表一个指针有意义 – 2011-04-18 23:11:18