假设我有三个类:A(抽象的母类),B和C是A的子类。
因此,B和C从A继承(公共继承)。 我有一个指向A的指针列表,我用B或C的指针填充它。
问题是:在进行转换时,哪种样式更受青睐?
class A {};
class B : public A {};
class C : public A {};
B* objB = new B();
C* objC = new C();
std::list<A*> myList;
// Option A: static cast conversion
myList.push_back(static_cast<A*> (objB));
myList.push_back(static_cast<A*> (objC));
// Option B: implicit conversion
myList.push_back(objB);
myList.push_back(objC);
// Option C: C-style conversion (I understand that this is evil and must be avoided)
myList.push_back((A*) objB);
myList.push_back((A*) objC);
那么,就代码清晰度和安全性而言,哪种方法更好?我知道 static_cast 更容易搜索,但在这种情况下,隐式转换应该已足够。
dynamic_cast
的作用。 - JorenHeit