Wil*_*mKF 2 c++ maintainability readability const
想象一下,在C++中,有两个类被命名derived,另一个被命名base为第一个类的基类.如果我有以下代码,这是首选的:
base *b = init_value_here;
const derived *d = static_cast<derived *>(b);
Run Code Online (Sandbox Code Playgroud)
要么
base *b = init_value_here;
const derived *d = static_cast<const derived *>(b);
Run Code Online (Sandbox Code Playgroud)
换句话说,最好const在不需要时在静态强制转换中排除,因为编译器可以提升为常量,或者是否更好地包含它以放宽限制,b以便const将来更容易制作?
如果可能的话,都不是.设计您的类,以便基类定义一个完全有用的接口,并仅使用基类指针.
但有时你会遇到遗留代码,在这种情况下我会明确说明你将它转换为const.
编辑:我应该清楚地表明,偶尔出现非多态情况并且使用演员表的解决方案是合适的.一般来说,向下转化可能是一种设计气味,但它并不总是表明某些东西肯定是错误的.