Questions tagged «c++»

有关C ++的问题,C ++是一种静态类型,自由格式,多范式,已编译的通用编程语言。

4
为什么#include <iostream.h>不好?
我正在阅读另一个线程,一个人向初学者询问有关C ++的书籍,一个回答的程序员写道: 警告:请避免所有带有“ hello world”字样的书都标明 #include &lt;iostream.h&gt; 我打开了我的C ++书,并确定它像上面的示例一样包含iostream标头。 为什么这么糟?学习C ++时,我还应牢记其他哪些指针? 背景:我精通C语言,下学期将开始学习C ++。

2
如何组织C ++单元测试代码以实现最大的单元测试效率?
这个问题与单元测试框架无关。 这个问题与编写单元测试无关。 这个问题是关于在哪里放置UT代码以及如何/何时/在哪里编译和运行它。 在有效地使用旧版代码中,迈克尔·费瑟斯断言 良好的单元测试...运行速度快 然后 运行1/10秒的单元测试是缓慢的单元测试。 我认为这些定义确实有意义。我还认为,这意味着您必须分别保留一组单元测试和一组代码测试,这些测试需要更长的时间,但是我想这就是您仅在运行(非常快)时才调用单元测试的价格。 显然,问题在C ++中是“跑”单元测试(小号),你必须: 编辑代码(生产或单元测试,具体取决于您所在的“周期”) 编译 链接 启动单元测试可执行文件(小号) 编辑(经过奇怪的近距离表决):在进入细节之前,我将尝试在此处总结要点: 如何有效地组织C ++单元测试代码,这样既可以有效地编辑(测试)代码又可以运行测试代码? 然后,第一个问题是确定将单元测试代码放在哪里,以便: 结合相关的生产代码进行编辑和查看是“自然的”。 轻松/快速地为您当前更改的单元开始编译周期 在第二个的话,相关的,问题是什么来编译,这样的反馈是瞬时的。 极端的选择: 每个单元测试-测试单元都位于一个单独的cpp文件中,并且此cpp文件被单独编译+链接(连同它测试的源代码单元文件)到单个可执行文件,然后该可执行文件运行此一个单元测试。 (+)这样可以最小化单个测试单元的启动(编译+链接!)时间。 (+)测试运行非常快,因为它仅测试一个单元。 (-)执行整个套件将需要启动大量流程。可能是一个管理难题。 (-)流程启动的开销将变得可见 另一面将是-仍然-每个测试一个cpp文件,但是所有测试cpp文件(以及它们测试的代码!)都链接到一个可执行文件中(每个模块/每个项目/选择您的选择)。 (+)编译时间仍然可以,因为只有更改的代码才能编译。 (+)执行整个套件很容易,因为只有一个exe可以运行。 (-)套件将花费很多时间进行链接,因为任何对象的每次重新编译都会触发重新链接。 (-)(?)套装将花费更长的时间运行,尽管如果所有单元测试都很快,则时间应该可以。 那么,现实世界中的C ++ 单元测试如何处理?如果我只是每晚/每小时运行一次,那么第二部分并不重要,但是第一部分,即如何将UT代码“耦合”到生产代码,这样对于开发人员来说,将两者保持一致是“自然的”我认为专注始终很重要。(如果开发人员将UT代码作为重点,他们将要运行它,这将使我们回到第二部分。) 欣赏真实世界的故事和经验! 笔记: 该问题有意离开了未指定的平台和品牌/项目系统。 问题带有标记的UT&C ++是一个很好的起点,但是不幸的是,太多的问题(尤其是答案)过于注重细节或特定框架。 前一阵子,我回答了关于升压单元测试的结构的类似问题。我发现这种结构对于“真实的”快速单元测试是缺少的。我发现另一个问题过于狭窄,因此提出了这个新问题。

5
我应该在哪里放置与类无关的函数?
我正在一个C ++项目中工作,其中有很多数学函数,这些函数最初是作为类的一部分编写的。但是,由于我一直在编写更多代码,所以我意识到我到处都需要这些数学函数。 放置它们的最佳位置在哪里?假设我有这个: class A{ public: int math_function1(int); ... } 当我写另一个类时,我不能(或者说我不知道​​如何)math_function1在那个其他类中使用它。另外,我已经意识到其中一些功能与A类并没有真正的联系。它们似乎只是开始,但现在我可以看到它们仅仅是数学功能。 在这种情况下有什么好的做法?现在,我一直在将它们复制粘贴到新类中,我敢肯定这是最糟糕的做法。
47 c++  functions  class 


13
为什么仍首选C ++来构建沉重的GUI应用程序而不是最新的动态语言?[关闭]
我看到大多数包含大量GUI内容的应用程序通常都是使用C ++开发的。大多数游戏/浏览器都是用C ++编写的。 我们不能仅使用最新的动态语言开发更好的GUI应用程序吗?我知道Java并不是一个很好的选择。但是,像python这样的语言本来就建立在C上呢?最新的语言难道不应该比他们的祖先更好吗?为什么相对于最新的语言,为什么我们仍然需要使用古老的C ++? 我也想知道,在C ++中,什么是负责GUI处理的更快速度?另一方面,其他最新语言缺乏什么呢?

13
如何找到编程指导者?[关闭]
我决定学习编程。我已经读了几天,所以我会在阅读一些文章时从C ++开始。我对循环,数组,程序逻辑和对象有所了解,我需要有人来帮助我解决我的第一个项目时遇到的一些小问题。 所以这是一个问题-我在哪里可以找到这样的人?我没有任何编程的朋友。 编辑:2年后,我仍在寻找导师。我没有积极地编写代码,只是再次开始三个月。我致力于Cocos2d的Objective-C和iOS编程以及游戏编程。如果您想成为我的导师,请给我留言或发表评论。
46 learning  c++  teaching 

16
简历中的语言:放“ C / C ++”或“ C,C ++”更好吗?[关闭]
我要在几周内毕业,我的简历(如预期的那样)列出了我曾经使用过的语言。此前我已经把“C / C ++”,但当时我没有说用这两种语言很多经验,我现在要做的。 现在我已经正式学习了这两种语言,对我(以及真正了解这两种语言的任何人)来说,它们是相似的,同时又是完全相似的。当然,大多数C代码都是可编译的C ++代码,但是这些相似之处在很大程度上结束了语法和库函数的合并。在大多数非平凡的问题中,机会是所需的C ++解决方案将不同于所需的C解决方案。 我的问题: 招聘人员会注意还是关心您是否将“ C / C ++”而不是“ C,C ++”?他们是否会因为缺乏第一种形式而缺乏对这两种形式的工作的了解,还是会认为包含第二种形式是一种潜在的“简历增强”(将它们列为2种语言,而不是“一种”) ? 此外,对于您申请的对这两种语言特别感兴趣的工作,面试过程是否包括有关C编程和C ++编程之间差异的问题(因此,关于实际编程技术,不仅是后者中的额外范例) )?
46 c++  resume  c 

9
我们如何避免CI驱动的开发……?
我正在与其他许多常规贡献者一起进行一个由研究主导的大型开源项目。因为该项目现在很大,所以一个财团(由两名全职员工和几名成员组成)负责维护该项目,持续集成(CI)等。他们只是没有时间进行外部集成虽然贡献。 该项目由一个“核心”框架组成,该框架包含大约半百万行代码,由联盟维护的一堆“插件”,以及几个外部插件,而我们大多数都不是。甚至没有意识到。 目前,我们的CI正在构建核心和维护的插件。 我们面临的主要问题之一是,大多数贡献者(尤其是偶尔的贡献者)并未构建90%的可维护插件,因此,当他们提议对核心进行重构更改时(这些日子经常发生),他们在GitHub上发出拉取请求之前检查了代码是否在其计算机上编译了。 代码工作正常,他们很高兴,然后CI结束了构建,问题开始了:在由联盟维护的插件中编译失败,表明贡献者未在其计算机上构建。 该插件可能依赖于第三方库(例如CUDA),并且用户不希望,不知道该怎么做,或者只是出于硬件原因而不能编译该损坏的插件。 因此,那么-PR永远处于永远不会合并的PR的边缘-或贡献者在损坏的插件的源中抓取重命名的变量,更改代码,推入他/她的分支,等待CI会完成编译,通常会收到更多错误,并重复执行该过程,直到CI满意为止-或财团中两个已经超额预定的永久物之一提供帮助,并尝试在其计算机上修复PR。 这些选项都不可行,但我们只是不知道如何做不同。您是否曾经遇到过类似的项目情况?如果是这样,您如何处理这个问题?有没有我在这里看不到的解决方案?


7
我如何防止标题地狱?
我们正在从头开始一个新项目。大约有八位开发人员,一打左右的子系统,每个子系统都有四个或五个源文件。 我们怎样才能防止“标题地狱”(又名“意大利面条头”)? 每个源文件一个标头? 每个子系统加一个? 从函数原型中分离出typdef,结构和枚举? 将子系统内部与子系统外部分开? 坚持每个文件,无论标头还是源文件都必须是可独立编译的? 我并不是在寻求“最佳”方法,只是要指出要注意什么以及可能引起悲伤的指针,以便我们可以尝试避免这种情况。 这将是一个C ++项目,但是C信息将对将来的读者有所帮助。
44 c++  headers  include 

3
子类和子类型之间有什么区别?
关于这个问题的最高的答案是关于Liskov替代原理的努力,竭力区分子类型和子类。这也说明有些语言将两者混为一谈,而另一些则没有。 对于我最熟悉的面向对象语言(Python,C ++),“类型”和“类”是同义词。对于C ++,在子类型和子类之间进行区分意味着什么?举例来说,这Foo是的子类,但不是子类型FooBase。如果foo是的实例Foo,则此行: FooBase* fbPoint = &amp;foo; 不再有效?

11
关于无符号整数的最佳实践是什么?
我到处都使用unsigned int,但不确定是否应该这样做。可以是从数据库主键ID列到计数器等。如果数字永远不能为负,那么我将始终使用无符号整数。 但是我从其他人的代码中注意到,似乎没有其他人可以这样做。我忽略了一些关键的事情吗? 编辑:由于这个问题,我也注意到在C语言中,返回错误的负值是司空见惯的,而不是像C ++中那样引发异常。


6
Facebook为什么将PHP代码转换为C ++?[关闭]
我读到Facebook是从PHP开始的,然后为了提​​高速度,他们现在将PHP编译为C ++代码。如果是这样,他们为什么不这样做: 只是用C ++编程?按下将PHP移植到c ++代码的魔术编译器按钮时,肯定会出现一些错误/错误,对吗? 如果这个令人印象深刻的转换器运行得很好,为什么还要坚持使用PHP?为什么不使用Ruby或Python之类的东西呢?注意-我随机选择了这两个,但是主要是因为几乎每个人都说用这些语言进行编码是一种“乐趣”。那么,为什么不开发一种超级出色的语言,然后点击神奇的c ++编译按钮呢?
42 c++  php  compiler  facebook 

7
为什么在C ++中必须在类外部分别定义静态数据成员(与Java不同)?
class A { static int foo () {} // ok static int x; // &lt;--- needed to be defined separately in .cpp file }; 我看不到需要A::x在.cpp文件(或用于模板的同一文件)中分别定义。为什么不能同时A::x声明和定义? 是否出于历史原因被禁止使用? 我的主要问题是,如果static同时声明/定义数据成员(与Java相同)会影响任何功能吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.