找到 7345 篇文章 适用于 C++

如何在 Linux 上分析运行的 C++ 代码?

Vrundesha Joshi
更新于 2020 年 2 月 11 日 10:28:25

881 次查看

在 Linux 上分析 C++ 程序有很多很棒的分析工具。最广泛使用的工具是 Valgrind。它是一个用于内存调试、内存泄漏检测和分析的编程工具。您可以通过将二进制文件传递给它并将工具设置为 callgrind 来使用 valgrind。首先通过编译程序生成二进制文件 -$ g++ -o hello.cpp hello 现在使用 valgrind 进行分析:$ valgrind --tool=callgrind ./hello这将生成一个名为 callgrind.out.x 的文件。您可以使用名为 kcachegrind 的工具读取此文件。如果您使用的是 gcc,则可以使用内置的分析工具 gprof。您可以... 阅读更多

迭代 C/C++ 字符串单词的最优雅方法

Arjun Thakur
更新于 2020 年 2 月 11 日 10:27:10

2K+ 次查看

没有一种优雅的方法可以迭代 C/C++ 字符串的单词。对于某些人来说,最易读的方法可以被称为最优雅的方法,而对于其他人来说,最有效的方法。我列出了两种可以用来实现此目的的方法。第一种方法是使用 stringstream 读取以空格分隔的单词。这有点局限性,但是如果您提供适当的检查,则可以很好地完成任务。示例#include #include #include using namespace std; int main() {     string str("Hello from the dark side");     string tmp;         ... 阅读更多

什么是 C++ 或 Java 中的对象切片?

Ankitha Reddy
更新于 2019 年 7 月 30 日 22:30:21

2K+ 次查看

对象切片用于描述将派生类对象分配给基类实例的情况。这会导致派生类对象的某些方法和成员变量丢失。这被称为信息被切除。例如,class Foo { int a; }; class Bar : public Foo { int b; }; 由于 Bar 扩展了 Foo,因此它现在具有 2 个成员变量 a 和 b。因此,如果您创建了一个类型为 Bar 的变量 bar,然后创建... 阅读更多

在 C++ 标识符中使用下划线的规则是什么?

Arjun Thakur
更新于 2020 年 2 月 11 日 10:22:52

2K+ 次查看

来自 MSDN 文档-在标识符开头使用两个连续的下划线字符 ( __ ),或一个前导下划线后跟一个大写字母,在所有作用域中都为 C++ 实现保留。您应该避免对具有文件作用域的名称使用一个前导下划线后跟一个小写字母,因为可能与当前或将来的保留标识符发生冲突。因此,您应该避免使用以下名称-__foo、__FOO、_FOO以及以下名称不应在全局命名空间中使用-_foo、_bar除此之外,还有一些其他前缀,如 LC_、SIG_ 和后缀,如 _t... 阅读更多

可以在 C/C++ 中访问局部变量的内存超出其作用域吗?

Rishi Rathor
更新于 2020 年 2 月 11 日 10:20:27

146 次查看

让我们来看一个您可能能够在局部变量的作用域之外访问其内存的示例。示例#include int* foo() {    int x = 3;    return &x; } int main() {    int* address = foo();    cout

为什么使用“using namespace std”被认为是不好的做法?

Abhinaya
更新于 2019 年 7 月 30 日 22:30:21

397 次查看

C++ 具有一个标准库,其中包含构建应用程序时使用的常用功能,例如容器、算法等。如果这些库使用的名称公开,例如,如果它们在全局范围内定义了一个队列类,则您将无法再次使用相同的名称,而不会发生冲突。因此,他们创建了一个命名空间 std 来包含此更改。using namespace 语句仅表示在其存在的作用域中,使 std 命名空间下的所有内容都可用,而无需在每个内容之前添加 std:: 前缀。虽然此做法对于示例代码来说是可以的,但将... 阅读更多

为什么在循环条件内使用 iostream::eof 被认为是错误的?

Nancy Den
更新于 2020 年 6 月 23 日 13:40:06

153 次查看

仅仅因为我们还没有到达 EOF,并不意味着下一次读取会成功。假设您有一个使用 C++ 中的文件流读取的文件。在编写循环读取文件时,如果您正在检查 stream.eof(),则基本上是在检查文件是否已到达 eof。因此,您将编写如下代码-示例#include #include using namespace std; int main() {    ifstream myFile("myfile.txt");    string x;        while(!myFile.eof()) {       myFile >> x;       // 需要再次检查 x 是否有效或 eof       if(x) { ... 阅读更多

关于 C++,三法则是什么?

Govinda Sai
更新于 2020 年 6 月 23 日 13:40:50

115 次查看

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

为什么 C++ 模板只能在头文件中实现?

Ramu Prasad
更新于 2020 年 2 月 11 日 10:14:53

782 次查看

当您在 C++ 中实例化模板时,编译器会创建一个新类。此类包含您在使用它时传递给它的实际参数替换了您放置模板参数的所有位置。例如-template class MyClass {    T foo;    T myMethod(T arg1, T arg2) {       // 实现    } };并在您程序的某个地方使用此类,MyClass x;编译器在遇到此类情况时,会为每个类型参数创建一个新类。例如,如果您使用不同的模板参数创建了 3 个对象,您将获得 3 个类,... 阅读更多

如何在 C++ 中开始面向对象编程?

Arjun Thakur
更新于 2020 年 3 月 2 日 08:09:42

696 次查看

面向对象编程 (OOP) 是一种基于“对象”概念的编程范式,对象可能包含数据,以属性的形式;以及执行操作的指令,以方法的形式。例如,一个人是一个对象,它具有一些属性,例如身高、性别、年龄等。它还具有一些方法,例如移动、说话等等。对象这是面向对象编程的基本单元。即数据和对数据进行操作的函数都被捆绑成一个称为对象的单元。类当您定义一个类时,您定义了一个对象的蓝图。这实际上并没有... 阅读更多

广告

© . All rights reserved.