找到 7345 篇文章 关于 C++

何时可以使用 C/C++ 中的前向声明?

Priya Pallavi
更新于 2020年2月11日 10:43:13

174 次查看

前向声明让代码知道存在名为 Person 的类。当编译器看到这些名称的使用时,这可以满足编译器的需求。稍后,链接器将找到类的定义。例如:class Person; void myFunc(Person p1) { // ... } class Person { // 类的定义 };因此,在这种情况下,当编译器遇到 myFunc 时,它会知道它将在代码中的某个地方遇到这个类。这可以用于类使用代码放置/包含在包含类定义的代码之前的案例。

什么是 C/C++ 中的数组衰减?

Nikitha N
更新于 2020年2月11日 10:41:41

125 次查看

数组和指针在 C/C++ 中的工作方式非常相似。但是有一些细微的差别。例如,sizeof 运算符在这两者上的工作方式大相径庭。当您将数组转换为指针时,例如:#include int main() { const int a[] = { 2, 3, 5, 7, 11 }; const int* p = a; std::cout

为什么 C/C++ 中结构体的 sizeof 大小不等于每个成员 sizeof 大小的总和?

Chandu yadav
更新于 2020年2月11日 10:37:42

167 次查看

结构体 sizeof 与其每个成员 sizeof 之和的差异是由于字节填充和对齐。C/C++ 中的每种数据类型都有对齐要求。处理器将具有其体系结构的处理字长。在 32 位机器上,处理字大小为 4 字节或 32 位。例如,如果您有以下结构:例如:#include using namespace std; struct X { char b[3]; int c; }; int main() { char b[3]; int c; int total = sizeof(b) + sizeof(c); cout

什么是复制省略和返回值优化?

Smita Kapse
更新于 2020年2月11日 10:36:03

362 次查看

复制省略是由大多数编译器实现的一种优化,用于防止在某些情况下进行额外的(可能代价高昂的)复制。因此,如果您有一些创建未使用的对象或没有副作用的代码,例如:struct MyStruct { MyStruct() {} MyStruct(const MyStruct&) { std::cout

C++ 中指针变量和引用变量的区别是什么?

George John
更新于 2020年6月23日 13:49:38

1K+ 次查看

引用当变量声明为引用时,它成为现有变量的另一个名称。语法类型 &新名称 = 现有名称;初始化类型 &指针;指针 = 变量名;指针指针用于存储变量的地址。语法类型 *指针;初始化类型 *指针;指针 = 变量名;引用和指针的主要区别在于 -引用用于以另一个名称引用现有变量,而指针用于存储变量的地址。引用不能分配空值,但指针可以。引用变量可以通过值传递引用,而指针可以传递引用,但也可以通过引用传递引用必须… 阅读更多

如何在 C++ 中使用数组?

Srinivas Gorla
更新于 2020年2月11日 10:32:26

294 次查看

数组是由相同类型的一系列元素组成的,这些元素放置在连续的内存位置中,可以通过向唯一的标识符添加索引来单独引用。要在 C++ 中使用数组,您需要先声明它,例如,int arr[10];这声明了一个大小为 10 的 int 类型数组。这可以将 10 个整数存储在连续的内存中。要引用其任何元素,您需要使用数组访问运算符并提供要访问的元素的索引。C++ 数组中的索引从 0 开始。因此,在… 阅读更多

为什么在 C++ 中处理已排序数组比处理未排序数组更快?

Anvi Jain
更新于 2020年6月23日 13:43:58

221 次查看

在 C++ 中,处理已排序数组比处理未排序数组更快,因为分支预测。在计算机体系结构中,分支预测确定程序指令流中的条件分支(跳转)是否可能被执行。让我们举个例子 -if(arr[i] > 50) { 执行某些操作 B } else { 执行某些操作 A }如果我们对未排序和已排序顺序的 100 个元素运行此代码,则会发生以下情况:对于已排序数组 -1, 2, 3, 4, 5, …… 50, 51………100 A, A, A, A, A A, B ... 阅读更多

C 和 C++ 中未定义、未指定和实现定义行为的区别?

Abhinanda Shri
更新于 2019年7月30日 22:30:21

336 次查看

未定义行为只是 C++ 规范中未定义的行为。例如,如果您在一个表达式中有多个一元递增/递减操作,例如 i++ + ++i,它们会导致未定义的行为。这仅仅是因为某些语言结构在语法上是有效的,但是当代码运行时,您无法预测其行为。另一个例子是表达式:u = (u++);实现定义的行为是规范未指定的,留给实现者决定并记录如何做出选择的行为。在这种情况下,所做的选择必须… 阅读更多

C 和 C++ 中 main() 应该返回什么?

Nitya Raut
更新于 2020年2月11日 10:29:31

3K+ 次查看

main 的返回值用于指示程序如何退出。如果程序执行正常,则使用 0 返回值。异常终止(错误、无效输入、分段错误等)通常由非零返回值终止。对于如何解释非零代码没有标准。您可以定义自己的状态代码,并使用它们来表示程序中不同类型的失败。GCC 建议使用 stdlib.h 中定义的 EXIT_SUCCESS 或 EXIT_FAILURE 来发送退出信号。在 C++ 中,int main() 可以不带返回值地保留,此时它默认为返回 0。阅读更多

什么是 C++ 中的复制和交换习语?

Ankith Reddy
更新于 2020年6月23日 13:51:21

212 次查看

赋值包括两个步骤:破坏对象的旧状态并为其构建新状态。析构函数用于第一步,复制构造函数执行第二步。实现这两个步骤很简单。但是,当重载赋值运算符时,实现起来可能会非常困难。复制和交换习语是解决此问题的方案。此习语使用复制构造函数来构建数据的本地副本。然后,它使用 swap 函数将旧数据与新数据交换。然后,使用析构函数销毁临时副本。我们… 阅读更多

广告
© . All rights reserved.