如何解释下面的代码
how to explain the following code?
我有两个关于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是无关的和不必要的,但表示"外部链接",这意味着该函数可以从其他编译单元调用。外部链接是未在匿名命名空间中定义或以其他方式声明为"static"的函数的默认值。
throw规范指出该函数可以抛出两种不同类型的异常(c风格的字符串和可能在提供该函数的库中定义的RangeErr异常对象)。如果函数试图抛出任何其他类型的异常,则调用std::unexpected(),这将在默认情况下终止程序。也就是说,在我所知道的编译器中,没有一个编译器比简单地忽略非空抛出规范做得更多,我相信c++ 11设计了一种不同的机制。
-
。自动分配数组。可以用指针代替数组,但不能用数组代替指针。
-
不可能告诉这个函数做什么,因为你只发布了声明,而不是定义。
throw
显示了它可以抛出的异常类型,在本例中是c类型字符串或RangeErr
,尽管一次只有一个。RangeErr
大概已经定义了。extern
表示函数在其他文件中定义
throw
语法被证明是一个错误。根据具体情况和编译器,throw ()
可能会有些用处,但异常规范通常令人困惑,有时会妨碍编译器优化。请看Herb Sutter的这篇文章,他对c++略知一二。
1)不。不能给裸数组赋值。
2) test()
是函数名。throw(...)
列出了它可以抛出的异常类型。RangeErr
是某种类型。extern
表示该函数是外部定义的,并且可以在编译单元之外访问(即从其他文件)。
1)so No
2)这意味着该函数只能抛出类型为"const char *"answers"RangeErr"的异常。至于RangeErr是什么,我认为它会在代码的其他地方定义,很可能是从异常派生的。外部主要是函数的代码是外部链接的(dll,所以,或者其他什么),你必须检查该库的api文档,以找出它的作用
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 有人能为我解释一下C++代码吗
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- 有人可以解释一下这段代码如何能够反转字符串
- 有人可以向我解释一下这段代码的作用吗?
- 有人可以详细解释这个回文代码是如何工作的吗?
- 如何在 C++11 中解释静态代码
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 我不完全确定此代码的行为.有人可以向我解释一下吗?
- 有人可以解释我这个代码吗?它给出与我们输入的数字相反
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 解释以下宏代码的 O/P
- 如何解释 IDA Pro 生成的这些代码?
- 有人能给我解释一下下面的模板代码吗
- 按位 - 代码解释
- 有人可以根据此代码解释起床和降低语法
- 用于人脸检测的Haar级联xml文件代码解释OpenCV
- 代码解释 C++ [结构 / 两个 diamentinal 数组 / 指针]
- int到二进制代码解释C++
- c++代码解释