gpt4 book ai didi

c++ - 下面的代码怎么解释?

转载 作者:太空狗 更新时间:2023-10-29 20:00:37 26 4
gpt4 key购买 nike

我有两个关于 C++ 编程的问题。

1)int a[10] = new int*; 这个语句有效吗?

2) extern void test(int a,int b) throw(const char *, RangeErr);

test() 是干什么的,throw(const char*, RangeErr) 意思是抛出两个异常? RangeErr 是什么?为什么是外部的?这个函数有什么作用?

最佳答案

1) 无效。数组不是指针(尽管在某些情况下它可以隐式转换为指针)。相反,请尝试:

int* a = new int[10];

2) 这是一个带有(现已弃用且不明智的)抛出规范的函数声明。 extern 是无关的和不必要的,但表示“外部链接”,这意味着可以从其他编译单元调用该函数。外部链接是未在匿名命名空间中定义或以其他方式声明为“静态”的函数的默认值。

throw 规范指出这个函数可以抛出两种不同类型的异常(一个 C 风格的字符串和一个 RangeErr 异常对象,它可能在提供这个函数的库中定义)。如果该函数试图抛出任何其他类型的异常,则调用 std::unexpected() ,这在默认情况下会终止程序。也就是说,据我所知,除了简单地忽略非空抛出规范之外,没有任何编译器能做更多的事情,而且我相信为 C++11 设计了一种不同的机制。

关于c++ - 下面的代码怎么解释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com