在下面的示例中,数组的大小是否v保证为2或3?
static const int i = 3;
class X {
char v[i];
static const int i = 2;
};
Run Code Online (Sandbox Code Playgroud)
从标准来看,
3.3.6/2在S类中使用的名称N应在其上下文中引用相同的声明,并在S的完整范围内重新评估
我认为这意味着'我'将会是2什么,重新评估的东西在这里意味着什么?
以下示例留下可能的内存泄漏,因为析构函数不会针对在其构造函数运行期间处理异常的对象运行.我在哪里处理这个内存泄漏?
#include <exception>
class MyClass {
public:
MyClass()
{
c = new char[5];
throw std::runtime_error("test");
}
~MyClass ()
{
delete[] c;
}
private:
char *c;
};
int main()
{
try
{
MyClass Obj;
}
catch (std::runtime_error)
{
}
}
Run Code Online (Sandbox Code Playgroud) 一旦我认为这两个具有相同的含义,但在阅读了更多关于它之后,我仍然不清楚这些差异.局部范围有时不是指功能范围吗?什么意思只有标签有功能范围?
我知道如何使用,extern "C"但必须使用它的条件是什么?
extern "C"告诉C++编译器不要对大括号内的代码执行任何名称修改.这允许您从C++中调用C函数.
例如:
#include <string.h>
int main()
{
char s[] = "Hello";
char d[6];
strcpy_s(d, s);
}
Run Code Online (Sandbox Code Playgroud)
虽然这在VC++上编译得很好.但有时这写成:
extern "C" {
#include <string.h>
}
Run Code Online (Sandbox Code Playgroud)
我没有看到这一点.你能举一个extern "C"必要的真实例子吗?
在下面的 XML 中,在元素的属性上放置注释的替代方法是什么?
<!-- I can comment here -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView_ben"
<!-- Cannot place a comment here -->
android:layout_centerHorizontal="true"/>
Run Code Online (Sandbox Code Playgroud) 我刚刚读到,运算符的评估顺序和优先级是不同的,但在C++中是相关的概念.但我还不清楚这些有什么不同但有关系?
int x = c + a * b; // 31
int y = (c + a) * b; // 36
Run Code Online (Sandbox Code Playgroud)
上述陈述与评估顺序有何关系.例如,当我说(c + a)我通过改变其优先级来改变表达式的评估顺序时?
在下列情况下,每个成员都有不同的名称或实体,为什么他们的地址相同?
struct B { int x; };
struct A { B b; };
int main()
{
A obj;
cout << &obj.b.x << endl;
cout << &obj.b << endl;
cout << &obj << endl;
}
Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2005中,我正在尝试编译.c文件:
int i = 6;
int a[i];
Run Code Online (Sandbox Code Playgroud)
它不起作用,我的编译器遵循哪个标准?
在下面,我如何使用typedef语法定义我的函数?
typedef void F();
//declare my function
F f;
//error
F f { }
Run Code Online (Sandbox Code Playgroud) 在C++中,当使用指向多维数组的指针时,
int arr[2][5];
int (*p)[5] = arr;
Run Code Online (Sandbox Code Playgroud)
a如何int*与大小不同int (*)[5]?