找到 34423 篇文章,关于编程

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

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

71 次查看

以下是 C++ 编程中导致未定义行为的最常见原因。请注意,标准规定所有这些都会导致未定义行为,并且在编写程序时应不惜一切代价避免它们。 带符号整数溢出对空指针、大小为零的“new”分配返回的指针、尚未明确初始化的指针、数组末尾之外位置的指针进行解引用。 使用已超出作用域或已删除的对象的指针 执行导致结果超出数组边界的指针运算。将指针转换为不兼容的对象... 阅读更多

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

Ramu Prasad
更新于 2019年7月30日 22:30:22

263 次查看

struct 的成员和基类默认是 public 的,而在 class 中,它们默认为 private。除此之外,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
更新于 2019年7月30日 22:30:22

677 次查看

有四种方法可以将对象传递给函数。假设您有一个类 X 并希望将其传递给函数 fun,那么 - 按值传递这会在函数作用域中创建对象的浅拷贝。您在此处修改的内容不会反映在传递给它的对象中。例如,声明 void fun(X x); 调用 X x; fun(x); 按引用传递这将对象的引用传递给函数。您在此处修改的内容将反映在传递给它的对象中。不会复制... 阅读更多

为什么在 C++ 中访问数组越界不会报错?

Rishi Rathor
更新于 2019年7月30日 22:30:22

2K+ 次查看

这是因为 C++ 不进行边界检查。像 Java 和 Python 这样的语言具有边界检查,因此如果您尝试访问越界元素,它们会抛出错误。C++ 的设计原则是不应该比等效的 C 代码慢,而 C 不进行数组边界检查。因此,如果您尝试访问此越界内存,则程序的行为未定义,因为这已写入 C++ 标准中。通常,当您遇到未定义的行为时,任何事情都可能发生。应用程序可能会崩溃,可能会冻结,可能会... 阅读更多

C++ 标准中 int、long 类型的尺寸是多少?

Chandu yadav
更新于 2020年6月24日 06:05:04

313 次查看

C++ 标准没有指定整型类型的尺寸(以字节为单位)。它指定了这些类型必须能够容纳的最小范围。位数的大小可以很容易地从指定的最小范围中找到。不参考标准,而是各种平台常用的尺寸为 -对于 32 位系统,标准是 ILP32 - 即 int、long 和指针都是 32 位量。对于 64 位系统,Unix 标准是 LP64 - long 和指针是 64 位(但 int 是 32 位)。Windows 64 位标准是 LLP64 - long 和指针是 64 位(但 long 和... 阅读更多

C++ 中的聚合体和 POD 是什么?

George John
更新于 2020年2月11日 12:49:57

573 次查看

POD 是 C++ 中的首字母缩略词,表示普通旧数据。它是一个类/结构体,它**只**有成员变量,没有方法、构造函数、析构函数、虚函数等。例如,示例#include using namespace std; // POD struct MyStruct {    int key;    string data; }; int main() {    struct MyStruct s;    s.key = 1;    s.data = "hello";    return 0; }结构体 MyStruct 没有用户定义的构造函数、析构函数等,因此是 POD。聚合体是数组或类,它没有用户声明的构造函数、没有私有或受保护的非静态数据成员、没有基... 阅读更多

C++11 中的 lambda 表达式是什么?

V Jyothi
更新于 2020年6月24日 06:06:07

328 次查看

C++ STL 包含有用的通用函数,如 std::for_each。不幸的是,它们的使用也可能非常麻烦,特别是如果您想要应用的函子对特定函数是唯一的。因此,您将创建的此函数将位于该命名空间中,仅在该一个地方使用。解决此问题的办法是使用匿名函数。C++ 在 C++11 中引入了 lambda 表达式以允许创建匿名函数。示例#include #include #include // for_each using namespace std; int main() {    vector myvector;    myvector.push_back(1);    myvector.push_back(2);    myvector.push_back(3);    for_each(myvector.begin(), myvector.end(), [](int x) {     ... 阅读更多

为什么在 C++ 代码中使用 extern "C"?

Priya Pallavi
更新于 2019年7月30日 22:30:22

1K+ 次查看

当声明在 C 中实现/编译的函数时,需要在 C++ 中使用 extern "C"。使用 extern "C" 让编译器知道我们想要使用 C 的命名和调用约定。这会导致编译器在我们的 C++ 代码中进入 C 模式。这是必需的,因为 C++ 编译器以与 C 编译器不同的方式对符号表中的名称进行修饰,因此行为也与 C 编译器不同。

C++ 中的 POD 类型是什么?

Arjun Thakur
更新于 2020年3月2日 07:55:47

1K+ 次查看

POD 是 C++ 中的首字母缩略词,表示普通旧数据。它是一个类/结构体,它**只**有成员变量,没有方法、构造函数、析构函数、虚函数等。例如,示例#include using namespace std; // POD struct MyStruct {     int key;     string data; }; int main() {     struct MyStruct s;     s.key = 1;     s.data = "hello";     return 0; }结构体 MyStruct 没有用户定义的构造函数、析构函数等,因此是 POD。

广告