找到 7345 篇文章 关于 C++

-std = c++11 和 -std = gnu++11 之间有什么区别?

George John
更新于 2020-06-24 05:45:45

1K+ 阅读量

GNU C++ 编译器 g++ 为 C++ 语言提供了扩展。这两个选项之间的区别在于是否启用这些可能违反 C++ 标准的 GNU 扩展。请注意,即使使用 -std = c++11,某些扩展仍然可能有效,前提是它们不违反标准。GNU 编译器中 C++ 语言扩展的列表可以在这里找到 - https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html

C++0x 和 C++11 有什么区别?

Nishtha Thakur
更新于 2019-07-30 22:30:22

350 阅读量

C++ 和 C 标准通常以其发布年份命名。例如,在 C++ 中,原始标准于 1998 年发布,因此称为 C++98,其第一个更正版于 2003 年发布,称为 C++03。对于下一次修订,预计下一个标准将在 2008 年完成,但由于不确定,因此命名为 C++0x,其中 x 代表 8 或 9。尽管计划有所调整,但现在称为 C++11。因此,C++0x 是标准在发布前的名称。一旦它在... 阅读更多

“放置 new”在 C++ 中有什么用?

Abhinanda Shri
更新于 2020-06-24 05:46:44

284 阅读量

简而言之,placement new 允许您在已分配给给定变量的内存上“构造”一个对象。这对于优化很有用,因为它比重新分配和重用已分配给它的相同内存更快。它可以按如下方式使用 -new (address) (type) initializer我们可以指定一个地址,我们希望在该地址处构造给定类型的新的对象。示例#include using namespace std; int main() {    int a = 5;    cout

C++ 与 C++0x 与 C++11 与 C++98

Smita Kapse
更新于 2020-02-11 11:15:38

2K+ 阅读量

C++98 是 C++ 标准的第一个版本。它定义了所有基本的语言结构、STL 和标准库。C++03 是对该标准的下一个修订版。这主要被认为是标准的错误修复,因为它更正了 92 个核心语言缺陷报告、125 个库缺陷报告,并且只包含一个新的语言特性:值初始化。C++0x 是正在进行的工作的名称,预计将在 2008-09 年完成,但最终在 2011 年完成。C++11 是 2011 年发布的现代 C++ 标准。这为现有语言带来了许多重大扩展和改进。... 阅读更多

C++11 中的五法则是什么?

Chandu yadav
更新于 2020-06-24 05:50:29

596 阅读量

五法则应用于 C++ 中的资源管理。资源管理使客户端无需担心托管对象的生存期,从而可能消除 C++ 代码中的内存泄漏和其他问题。但这种管理是有代价的。五法则指出,如果您必须编写以下函数之一,那么您必须对所有这些函数制定策略。如果我们有一个对象 Foo,那么我们可以有一个 FooManager 来处理资源 Foo。在实现 FooManager 时,您可能都需要以下... 阅读更多

C++ 中的三法则与五法则?

George John
更新于 2020-06-24 05:51:52

445 阅读量

三法则是在使用 C++ 时的一条经验法则。这是一种良好的实践规则,它指出如果您的类需要任何一个复制构造函数、赋值运算符或析构函数显式定义,那么它可能需要所有三个。为什么?这是因为,如果您的类需要任何上述内容,它将管理动态分配的资源,并且可能需要其他资源来成功实现这一目标。例如,如果您需要一个赋值运算符,您将创建当前通过引用复制的对象的副本,从而分配... 阅读更多

为什么可变长数组不是 C++ 标准的一部分?

Abhinaya
更新于 2020-06-24 05:52:35

415 阅读量

在栈上创建潜在的大型数组(通常只有很少的空间可用)并不好。如果您事先知道大小,则可以使用静态数组。如果您事先不知道大小,则将编写不安全的代码。可变长数组不能在 C++ 中原生包含,因为它们需要对类型系统进行巨大更改。C++ STL 中提供了可变长数组的替代方案,即向量。您可以像这样使用它 -示例#include #include using namespace std; int main() {    vector vec;    vec.push_back(1);    vec.push_back(2);    vec.push_back(3);   ... 阅读更多

如何使用 new 在 C++ 中声明二维数组?

Chandu yadav
更新于 2020-02-11 11:07:10

2K+ 阅读量

动态二维数组基本上是指向数组的指针数组。因此,您首先需要初始化指向指针的数组,然后在循环中初始化每个一维数组。示例#include using namespace std; int main() {    int rows = 3, cols = 4;    int** arr = new int*[rows];    for(int i = 0; i < rows; ++i)    arr[i] = new int[cols];    return 0; }这将创建一个大小为 3x4 的二维数组。在这种情况下,请注意清除内存,因为您需要在... 阅读更多

#include 与#include “filename” 在 C/C++ 中的区别?

Anvi Jain
更新于 2019-07-30 22:30:22

3K+ 阅读量

这两种形式的区别在于预处理器搜索要包含的文件的位置。#include预处理器以实现依赖的方式进行搜索,它搜索编译器预先指定的目录。此方法通常用于包含标准库头文件。#include “filename”预处理器在包含指令所在文件的同一目录中搜索。如果失败,则开始像 #include 形式一样工作。此方法通常用于包含您自己的头文件。

何时在 C++ 中使用虚析构函数?

Govinda Sai
更新于 2020-02-11 11:05:48

735 阅读量

Scott Meyers 在 Effective C++ 中说 -如果一个类有任何虚函数,它应该有一个虚析构函数,并且那些未设计为基类或未设计为用于多态性的类不应该声明虚析构函数。因此,您应该在多态基类中声明析构函数为虚函数。这是因为,如果您使用派生构造函数创建基类的对象 -Base *b = new Derived(); // 使用 b delete b;如果 Base 的析构函数不是虚函数,那么在这种情况下,delete b 的行为未定义。对析构函数的调用将像任何非虚代码一样解析。... 阅读更多

广告

© . All rights reserved.