4

1.所以我有:

Class A;

Class B : public A;

Class C : public B;

2.和B类型的指针向量:

vector<B*> vec;

3.然后:

C* ptr = new C();

vec.push_back(ptr);

所以问题是,这样使用 std::find 可靠吗?

std::find(vec.begin(), vec.end(), prt);

另外,使用 this-> 指针进行搜索可以吗?

std::find(vec.begin(), vec.end(), this); //inside of a type C object

提前致谢。

4

1 回答 1

4

是的,这是安全的,因为==在类型层次结构中指向对象的指针之间存在明确定义的比较 ()。即使指针的实际值在转换为基类类型后可能会有所不同(通常是多重继承的情况),但运行时需要对此进行调整,以便这些指针之间的比较仍然产生正确的结果。

于 2012-08-03T10:49:14.027 回答