Difference between amp;(*similarObject) and similarObject? Are they not same?(amp;(*similarObject) 和similarObject 之间的区别?他们不一样吗?)
问题描述
谁能给我解释一下
dynamic_cast<SomeObject *>( &(*similarObject) );
做一个解引用指针的地址有什么意义?指针本身不就是它的地址吗?
What is the point of doing the address of a dereferenced pointer? Wouldn’t the pointer itself just be the address of it?
推荐答案
可能是 similarObject 的类型重载了 operator* 所以它返回了地址您正在传递给 dynamic_cast.
It may be that the type of similarObject has overloaded operator* and so it returns something whose address you're passing to dynamic_cast.
&(*x) 和 x 可能不总是一样的.例如,考虑迭代器:
&(*x) and x may not be always the same thing. For example, think of iterator:
std::map<int, int>::iterator it = v.begin();
那么 it 和 &(*it) 是两个不同的东西:
Then it and &(*it) are two different thing:
it的类型是std::map::iterator &(*it)的类型是std::pair* 
- The type of 
itisstd::map<int, int>::iterator - The type of 
&(*it)isstd::pair<int,int>* 
他们完全不同.您的代码片段也可能发生类似的事情.
They're not at all same. Similar thing may happen with your code-snippet as well.
这篇关于&(*similarObject) 和similarObject 之间的区别?他们不一样吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:&(*similarObject) 和similarObject 之间的区别?他们不一样吗?
				
        
 
            
        - C++ 协变模板 2021-01-01
 - STL 中有 dereference_iterator 吗? 2022-01-01
 - 一起使用 MPI 和 OpenCV 时出现分段错误 2022-01-01
 - 静态初始化顺序失败 2022-01-01
 - Stroustrup 的 Simple_window.h 2022-01-01
 - 近似搜索的工作原理 2021-01-01
 - 从python回调到c++的选项 2022-11-16
 - 使用/clr 时出现 LNK2022 错误 2022-01-01
 - 如何对自定义类的向量使用std::find()? 2022-11-07
 - 与 int by int 相比,为什么执行 float by float 矩阵乘法更快? 2021-01-01
 
						
						
						
						
						
				
				
				
				