1.所以我有:
Class A;
Class B : public A;
Class C : public B;
2.B型指针向量:
vector<B*> vec;
3.Then:
C* ptr = new C();
vec.push_back(ptr);
所以问题是,使用std :: find是可靠的吗?
std::find(vec.begin(), vec.end(), prt);
此外,使用此搜索进行搜索是否正常 - &gt;指针?
std::find(vec.begin(), vec.end(), this); //inside of a type C object
提前致谢。
答案 0 :(得分:4)
是的,这是安全的,因为在指向类型层次结构中的对象的指针之间存在明确定义的比较(==
)。尽管指针的实际值在转换为基类类型后可能会有所不同(通常是多重继承的情况),但运行时需要对其进行调整,以便这些指针之间的比较仍能产生正确的结果。