有人在IRC中提到过,但谷歌没有一个好的答案。
我有一个C ++应用程序,在Linux上运行,我正在优化。 我怎样才能确定我的代码的哪个区域运行缓慢?
#include <stdio.h> int main(void) { int i = 0; i = i++ + ++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? volatile int u = 0; u = u++ + ++u; printf("%d\n", u); // 1 u = 1; u = (u++); printf("%d\n", u); […]
什么是“序列点”? 未定义的行为和顺序点之间的关系是什么? 我经常使用有趣和令人费解的expression式,如a[++i] = i; ,让自己感觉更好。 为什么我应该停止使用它们? 如果您已经阅读过这些内容,请务必访问后续问题重新加载未定义的行为和顺序点 。 (注意:这是一个Stack Overflow的C ++常见问题解答的入口,如果你想批评在这个表单中提供FAQ的想法,那么在这个开始所有这些的meta上的贴子将是这个地方的答案。那个问题在C ++聊天室中进行监控,常见问题解决scheme首先出现,所以你的答案很可能会被那些提出这个想法的人阅读)。
在C ++中通常使用某种前缀命名成员variables,以表示它们是成员variables,而不是局部variables或参数。 如果你来自MFC背景,你可能会使用m_foo 。 偶尔也看过myFoo 。 C#(或可能只是.NET)似乎build议只使用下划线,如_foo 。 这是由C ++标准允许的吗?
注意:答案是按照特定的顺序给出的,但是由于许多用户根据投票分类答案,而不是按照给定的时间排列答案,下面是答案的索引,按其最有意义的顺序排列: C ++中运算符重载的一般语法 C ++中运算符重载的三个基本规则 会员与非会员之间的决定 常见的运营商超载 指派操作员 input和输出操作符 函数调用操作符 比较运营商 算术运算符 arrays下标 指针types的运算符 转换运算符 重载新的和删除 (注意:这是一个Stack Overflow的C ++常见问题解答的入口,如果你想批评在这个表单中提供FAQ的想法,那么在这个开始所有这些的meta上的贴子将是这个地方的答案。那个问题在C ++聊天室中进行监控,常见问题解决scheme首先出现,所以你的答案很可能会被那些提出这个想法的人阅读)。
在模板中,为什么我必须将typename名称和template放在相关名称上? 究竟什么是依赖名称呢? 我有以下代码: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // … template<typename U> struct inUnion { // Q: where to add typename/template here? typedef Tail::inUnion<U> dummy; }; template< > struct inUnion<T> { }; }; template <typename T> // For the last node Tn. […]
我有以下代码。 int * foo() { int a = 5; return &a; } int main() { int* p = foo(); cout << *p; *p = 8; cout << *p; } 而代码只是运行没有运行时exception! 产量是58 怎么会这样? 是不是一个局部variables的内存不能访问其function?
其他人已经多次告诉我,我的老师在代码中using namespace std的build议是错误的。 因此,我们应该使用std::cout和std::cin 。 为什么using namespace std被认为是不好的做法? 这是真的低效率或风险声明不明确的variables(variables与std命名空间中的函数共享相同的名称)? 或者,这是否会影响性能?
我见过很多人在最近很多文章中试图阅读这样的文件。 #include <stdio.h> #include <stdlib.h> int main( int argc, char **argv ) { char * path = argc > 1 ? argv[1] : "input.txt"; FILE * fp = fopen( path, "r" ); if( fp == NULL ) { perror( path ); return EXIT_FAILURE; } while( !feof( fp )) { /* THIS IS WRONG */ /* […]