c++ - std::find 用于继承对象 C++

标签 c++ inheritance std stdvector

1.所以我有:

Class A;

Class B : public A;

Class C : public B;

2.还有一个 B 类型的指针 vector :

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

提前致谢。

最佳答案

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

关于c++ - std::find 用于继承对象 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11794177/

相关文章:

c++ - 带有构造函数的 OLE 自动化对象的初始对象引用

c++ - 指向数组重叠数组末端的指针

C++11 - 计算数字 vector 中的模式时出错

javascript - 我对javascript原型(prototype)继承的误解

c++ - 如何通过cstdlib系统传递带空格的参数

c++ - 显式复制构造函数和 std::sort

c++ - 为什么 vector<int * const> 是非法的/不合逻辑的?

c++ - 将额外的依赖项与 XCode 链接起来

swift - 继承自@objc协议(protocol)

C++:在非虚函数中使用纯虚函数