<分区>
是否可以抛出一个 bad_cast 异常而不使任何层次结构或新类不同于 C? main() 无法编辑,唯一可以编辑的是 C 类。我也不能明确抛出 bad_cast。
class C{
private:
...
public:
void f(){
...
}
};
int main () {
C c;
c.f();
}
提前致谢
<分区>
是否可以抛出一个 bad_cast 异常而不使任何层次结构或新类不同于 C? main() 无法编辑,唯一可以编辑的是 C 类。我也不能明确抛出 bad_cast。
class C{
private:
...
public:
void f(){
...
}
};
int main () {
C c;
c.f();
}
提前致谢
最佳答案
不,你不能。
dynamic_cast
仅适用于多态类类型,C++ 核心语言的内置类型都不是多态类类型。
所以只要你不能定义任何新的多态类(也不能 #include
其他已经存在的多态类的定义),或者不能调用另一个能看到这些定义的函数(这可能应该被视为作弊),您无法获得 bad_cast
异常。
此外,除了抛出 std::bad_cast
异常的 dynamic_cast
之外,没有核心语言构造。所以你的问题的答案:
is it possible to throw a bad_cast exception without making any hierarchy or new classes different from C?
是“否”。
关于c++ - 抛出没有层次结构的 bad_cast exc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15876446/