找到 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+ 次浏览

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

如何在 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.