为 C++ 查询到 7345 篇 文章

C++ 中“struct”和“typedef struct”之间的区别?

Ankith Reddy
更新于 30-7-2019 22:30:22

817 次浏览

在 C++ 中,“struct”和“typedef struct”之间没有区别,因为 C++ 中所有 struct/union/enum/class 声明都像隐式 typedef 一样,只要该名称不会被另一个具有相同名称的声明隐藏。但是,有一个细微的区别,即 typedef 无法被前向声明。因此,对于 typedef 选项,必须在任何地方使用 typedef 之前包含包含它的文件。

为什么我们应该避免在 C/C++ 中使用全局变量?

Ankitha Reddy
更新于 24-6-2020 06:10:51

4K+ 次浏览

我们应该避免在任何语言中使用全局变量,而不仅仅是 C++。这是因为这些变量会污染全局命名空间,可能会导致大型项目中出现一些非常讨厌的 bug,因为它们可以从任何文件访问,因此可以从任何地方修改它们。下面列出了一些为何全局变量被认为不佳的原因:全局变量可以被代码的任何部分更改,这使得很难记住或推理出可能的每种用途。全局变量可能没有任何访问控制。它不能仅限于程序的某些部分。使用全局变量会导致非常... 了解更多

什么是 C++ 中的前向声明?

Abhinaya
更新于 2020 年 2 月 12 日 06:14:19

414 次浏览

前向声明使声明之后的代码知道有一个名为 Person 的类。当编译器看到这些名称时,会满足编译器。稍后,链接器将找到这些类的定义。 示例代码:Person 类;void myFunc(Person p1) {    // ... }类 Person {    // 此处为类定义 };因此,在编译器遇到 myFunc 时,它将知道在代码的某个位置将遇到此类。这可以在使用该类的代码位于/包含在包含类定义的代码之前的情况下使用。

int argc、char *argv[] 在 C/C++ 中的含义是什么?

Chandu yadav
更新于 2020 年 6 月 24 日 06:12:03

7K+ 次浏览

argc 表示参数计数,argv 表示参数值。这些是主函数在开始执行时传递给它的变量。当我们运行一个程序时,我们可以给该程序输入参数,如下所示:$ ./a.out 示例你好,这里你好是一个可执行参数。可以在程序中访问它。例如,#include 使用命名空间 std;int main(int argc, char** argv) {    cout

C++ 中的普通类型转换与 static_cast 和 dynamic_cast

George John
更新于 2020 年 6 月 24 日 06:13:58

11K+ 次浏览

static_cast - 这用于正常的类型转换。此 cast 也负责隐式类型强制转换,也可以显式调用它。您应该在将 float 转换为 int、将 char 转换为 int 等情况下使用它。dynamic_cast - 此 cast 用于处理多态性。您只需要在将类型转为衍生类时才使用它。在您从基类转换为派生类时,仅在继承中使用它。普通类型转换 - 这是 C++ 中最强大的类型转换,因为它结合了 const_cast、static_cast 和 reinterpret_cast。但它也不安全... 了解更多

将二维数组传递给 C++ 函数

Govinda Sai
更新于 2023 年 9 月 6 日 13:28:22

44K+ 次浏览

C++ 不允许将整个数组作为参数传递给函数。但是,你可以通过指定数组的名称(不包含索引)来传递一个指针到数组。有三种将 2D 数组传递给函数的方法:--指定 2D 数组的列大小void processArr(int a[][10]) {    // 执行操作 }--传递包含指针的数组void processArr(int *a[10]) {    // 执行操作 } // 调用时int *array[10]; for(int i = 0; i < 10; i++)    array[i] = new int[10]; processArr(array);--传递指向指针的指针void processArr(int **a) {    // ... 了解更多信息

C++ 编程中的常见未定义行为

George John
更新于 2020 年 2 月 12 日,05:15:32

71 次浏览

以下是 C++ 编程中最常见的导致未定义行为的原因。请注意,标准中已将所有这些指定为导致未定义行为,在编写程序时应不惜一切代价加以避免。 带符号的有整数溢出取消引用一个 NULL 指针,一个返回大小为零的“new”分配的指针,一个尚未明确初始化的指针,一个位于数组末尾之外的位置的指针。 使用已超出范围的对象指针或已删除的对象指针 执行导致结果超出数组边界的指针算法。将指针转换为不兼容对象 ... 了解更多信息

C++ 的 struct 和 class 有什么区别?

Ramu Prasad
更新于 30-7-2019 22:30:22

263 次浏览

struct 的成员和基类默认是公共的,而在 class 中,它们默认是私有的。除此之外,struct 和 class 在功能上是等价的。但由于语义不同,它们在不同的地方被使用。struct 更像是一种数据结构,用于表示数据。另一方面,class 更像一个倾向于功能性的构造。它模仿事物存在的形式及其工作方式。

如何在 C++ 中检测整数溢出?

Sravani S
更新于 2020 年 6 月 24 日,06:01:55

1K+ 次浏览

唯一安全的方法是在溢出发生之前检查是否存在溢出。还有一些检验整数溢出的非常规方法。因此,如果你想检测无符号 int 加法中的溢出,你可以检查结果是否实际上小于任一加法值。比如:unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // 或者,"value < y" 也应该起作用这是因为,如果 x 和 y 都是无符号 int,并且相加后溢出,它们的数值不会大于它们中的任何一个,因为 ... 了解更多信息

如何在 C++ 中将对象传递到函数?

Ankitha Reddy
更新于 30-7-2019 22:30:22

677 次浏览

有四种方式可以将对象传递给函数。 让我们假设您有一个 X 类,并希望将其传递给函数 fun,然后 − 按值传递这将创建该对象在函数作用域中的一个浅层本地副本。您在此修改的内容不会反映在传递给它的对象中。 例如,声明 void fun(X x); 调用 X x; fun(x); 按引用传递这会将对该对象的引用传递给函数。您在此修改的内容将反映在传递给它的对象中。没有对象副本... 阅读全文

广告
© . All rights reserved.