☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

不应转换无 public 继承关系的指针或引用

12.10 ID_castNonPublicInheritance
目录 › next › previous

public 继承表示派生类是基类的某种扩展,而非 public 继承往往表示派生类是基类的某种例外,基类的方法不再适用于派生类的对象。

示例:

class A { .... };
class B: private A { .... };

void bar(A* a);

void foo(B* b) {
    bar((A*)b);    // Non-compliant
}

例中派生类 B 是对基类 A 的改造,再用 A 类方法处理 B 类对象是有问题的。

相关

ID_castNoInheritance

依据

ISO/IEC 14882:2003 4.10(3) ISO/IEC 14882:2011 4.10(3)
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.