小编fer*_*n17的帖子

向上转换时隐式转换与static_cast

假设我有三个类: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);
Run Code Online (Sandbox Code Playgroud)

那么,就清晰度(代码风格)而言,在安全性方面,哪一个更好?我知道static_cast更容易搜索,但在这种情况下,隐式转换应该足够了.

c++ casting coding-style upcasting

6
推荐指数
1
解决办法
2676
查看次数

标签 统计

c++ ×1

casting ×1

coding-style ×1

upcasting ×1