找到 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 的成员和基类默认是公有的,而 class 的成员和基类默认是私有的。除此之外,struct 和 class 在功能上是等效的。然而,由于语义的不同,它们被用在不同的场合。struct 更像是一种用于表示数据的结构体。另一方面,class 更倾向于功能性结构,它模拟事物的方式和工作方式。

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

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

1K+ 次浏览

唯一安全的方法是在溢出发生之前进行检查。虽然有一些检查整数溢出的hacky方法。因此,如果您旨在检测无符号 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++ 中的首字母缩写词,意思是普通旧数据 (Plain Old Data)。它是一个类/结构体,只包含成员变量,不包含方法、构造函数、析构函数、虚函数等。例如,示例 #include using namespace std; // POD 结构体 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++ 中的首字母缩写词,意思是普通旧数据 (Plain Old Data)。它是一个类/结构体,只包含成员变量,不包含方法、构造函数、析构函数、虚函数等。例如,示例 #include using namespace std; // POD 结构体 MyStruct { int key; string data; }; int main() { struct MyStruct s; s.key = 1; s.data = "hello"; return 0; }结构体 MyStruct 没有用户定义的构造函数、析构函数等,因此它是 POD。

广告