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

对象的实际类型与当前静态类型不相关,并调用其非静态成员函数

C++-Undefined-Behavior-56
目录 › next › previous

示例:

struct A { int foo(); };
struct B { .... };

int bar(void* p) {
    return static_cast<T*>(p)->foo();
}

int main() {
    B b;
    return bar(&b);  // Undefined behavior
}

例中 A 与 B 是不同且没有继承关系的类,通过不合理的类型转换调用非静态成员函数会导致未定义的行为。

依据

ISO/IEC 14882:2003 9.3.1(1)-undefined ISO/IEC 14882:2011 9.3.1(2)-undefined

规则

ID_castNoInheritance ID_forbidMemberVoidPtr ID_forbidFunctionVoidPtr
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.