Questions tagged «c++»

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

9
为什么许多异常消息不包含有用的详细信息?
似乎在一定程度上同意异常消息应包含有用的细节。 为什么系统组件中的许多常见异常不包含有用的详细信息? 一些例子: .NET List索引访问ArgumentOutOfRangeException并没有告诉我这是尝试和无效的索引值,也不会告诉我的允许范围。 基本上,来自MSVC C ++标准库的所有异常消息都是完全无用的(与上述相同)。 甲骨文例外.NET,告诉你(意译)“表或视图未找到”,但没有哪一个。 因此,在我看来,在大多数情况下,异常消息没有包含足够有用的细节。我的期望与众不同吗?我是否使用异常错误而我甚至注意到了这一点?或者,也许我的印象是错误的:大多数的异常都实际提供有用的信息?
220 c#  c++  exceptions 

30
爸爸对我学习程序的步伐不耐烦。我该怎么办?[关闭]
因此,大约一个月前,我父亲给我买了5本关于编程的书(C ++,Java,PHP,Javascript,Android)。他是一名架构师,对编程一无所知。他买了我,因为我告诉他编程很有趣,我想学习。 您可能知道,小时候(我14岁)并被要求从枯燥的书籍中学习编程并不是最简单的事情。我总是分心。.我之前告诉过他,我不需要买书,我可以看在线教程..但是,他太老套了。他只是让我使用这些书。 最近,他开始问我如何处理它,我向他展示了我制作的C ++程序,该程序将接受您键入的内容,然后为每个字母分配值(A是字母中的第一个字母,因此它获取值之1)..依此类推。然后,它将所有值相加并告诉您。因此,“ add”一词的值为9。 ^^对他来说不是很令人印象深刻。他对我大吼,并告诉我我一直在做的事。这不是真的。他非常传统,固执,不听我说的话。我应该告诉他什么? PS:如果您有关于分区书籍的任何技巧,请告诉我 编辑:非常感谢大家,您不知道知道有些人了解我的情况对您有多重要。我读了每个人,我会考虑每个人的意见。格拉西亚斯!
200 java  learning  c++ 

7
什么时候使用浮点数,什么时候使用双精度点
在我的编程经验中,我经常需要决定是否对实数使用float或double。有时我会选择浮动,有时我会选择双重,但这确实让我感觉更加主观。如果我要捍卫自己的决定,我可能不会给出合理的理由。 什么时候使用float和什么时候使用double?仅当存在内存限制时,您才总是使用double吗?或者,除非精度要求要求您使用double,否则您始终使用float?浮点数和双精度数之间关于基本算术的计算复杂度是否存在实质性差异?使用float或double的利弊是什么?你甚至用过长双吗?
194 c++  c  floating-point  numbers 

3
C ++ 11统一初始化是否可以替代旧式语法?
我知道C ++ 11的统一初始化解决了该语言在语法上的歧义,但是在许多Bjarne Stroustrup的演示文稿中(尤其是在GoingNative 2012演讲期间的那些演示文稿中),他的示例现在在构造对象时主要使用此语法。 现在是否建议在所有情况下都使用统一初始化?就编码风格和一般用法而言,此新功能应采用的一般方法是什么?什么原因不使用它? 请注意,在我的脑海中,我主要以对象构造作为用例,但是如果要考虑其他场景,请告诉我。
172 c++  c++11 

12
何时在C ++上使用C,以及在C上使用C ++?
我被介绍给计算机科学已经一年多了,从我的经验看来,C和C ++都被认为是“超快速”语言,而其他人(例如Python)和此类脚本语言通常被认为较慢。 但是我也看到过很多情况,一个软件项目甚至一个很小的项目都会交织文件,其中一定数量的文件用C编写,而一定数量的文件用C ++编写。 (我还注意到,C ++文件几乎总是具有相应的头,而C文件则没有那么多)。但是我的主要研究目的是对何时在C ++上使用C合适,以及何时在C上使用C ++更好的情况有一个一般的直觉。除了(1)C ++是面向对象的,而C ++是面向对象的, C不是,并且(2)语法非常相似,并且C ++是故意创建的,在许多方面都类似于C,但我不确定它们之间的区别是什么。在我看来,它们在许多领域(几乎)是可以互换的。 因此,如果有人可以解决这种情况,我们将不胜感激!谢谢
164 c++  c 

19
是否有任何理由使用C ++代替C,Perl,Python等?[关闭]
作为Linux(服务器端)开发人员,我不知道在哪里以及为什么应该使用C ++。 当我追求性能时,第一个和最后一个选择是C。 当“性能”不是主要问题时,Perl和Python等编程语言将是不错的选择。 我在这方面了解的几乎所有开源应用程序都是用C,Perl,Python,Bash脚本,AWK甚至PHP编写的,但是没有人使用C ++。 我不是在讨论GUI或Web应用程序之类的其他领域,而是在谈论Linux,CLI和守护程序。 使用C ++是否有令人满意的理由?

11
我应该停止使用术语C / C ++吗?
我了解C和C ++是不同的语言,但是当我学习C ++时,总是被告知C是C ++的子集,或者C ++是带有类的C。在C ++ x0,C ++ 11(或现代的C ++ 11/14/17)问世之前,这都是事实。实际上(特别是在嵌入式系统上工作时),很可能会发现用C ++编写的代码,但是很多部分完全是用纯C语言编写的。这里我有几个问题: 我应该停止使用术语C / C ++吗? 如果对#1的回答是肯定的,那么我将如何调用混合使用C和C ++的程序? 鉴于这两种语言都是“不同的”语言,C ++编译器很可能在某些时候停止支持用C语言编写的代码(因为现代c ++在指针,动态内存处理等基本内容上与C思维方式有所出入) 现在制定C / C ++标准的人员之间是否存在任何协作以保持兼容性 如果#4是肯定的,那么这种合作可能会在不久的将来随着现代c ++的出现而结束(11/14/17) 我知道已经有类似的问题,但是我敢肯定,很多人都会分享这些问题,因此我非常有兴趣获得良好的答案,尤其是在不久的将来与C ++趋势有关的观点。
140 c++  c  terminology  c++11 

15
为什么像Java,Javascript和C#这样的内存管理语言保留了“ new”关键字?
newJava,Javascript和C#等语言中的关键字会创建类的新实例。 该语法似乎是从C ++继承的,在C ++中该语法new专门用于在堆上分配类的新实例,并返回指向该新实例的指针。在C ++中,这不是构造对象的唯一方法。您还可以在不使用new-的情况下在堆栈上构造一个对象,实际上,这种构造对象的方式在C ++中更为常见。 因此,来自C ++背景,newJava,Javascript和C#等语言中的关键字对我来说似乎很自然并且很明显。然后,我开始学习没有new关键字的Python 。在Python中,只需调用构造函数即可构造实例,例如: f = Foo() 最初,这对我来说似乎有点不对劲,直到我想到Python没有理由拥有它new,因为所有内容都是一个对象,因此无需区分各种构造函数语法。 但是后来我想new-Java 的真正意义是什么?我们为什么要说Object o = new Object();?为什么不只是Object o = Object();呢?在C ++中,绝对需要new,因为我们需要区分在堆上分配和在堆上分配之间的区别,但是在Java中,所有对象都在堆上构造,那么为什么还要使用new关键字呢?对于Javascript,可能会问同样的问题。在我不太熟悉的C#中,我认为new在区分对象类型和值类型方面可能有一些用途,但是我不确定。 无论如何,在我看来,C ++之后的许多语言只是“继承”了new关键字-并不需要它。它几乎像一个残余关键字。我们似乎出于任何原因都不需要它,但是它在那里。 问题:我对此是否正确?还是有一些令人信服的理由new需要以C ++启发的内存管理语言(例如Java,Javascript和C#)而不是Python?

8
C ++比D有什么优势?
我最近一直在学习D,并且开始对这种语言有所了解。我知道它提供了什么,我还不知道如何使用所有东西,并且我对D习语等不了解很多,但是我正在学习。 我喜欢D。这是一种很棒的语言,以某种方式对C进行了巨大的更新,并且做得很好。似乎没有一个功能可以“实现”,但实际上是经过深思熟虑和精心设计的。 您会经常听到D是C ++ 应该是的(我要问的是每个人都应该自己决定是否这样做,以避免不必要的火焰战争)。我还从几位C ++程序员那里听说,他们对D的喜欢远超过C ++。 我自己,虽然我知道C,但是我不能说我知道C ++。如果有人认为C ++比D 作为语言要好,那我想听听他们都知道C ++和D的东西(这不是通常的“它具有更多的第三方库”或“有更多的资源”或“需要C ++的工作多于D”。) D是由一些非常熟练的C ++程序员(在D社区的帮助下)由Walter Bright和Andrei Alexandrescu设计的,旨在解决C ++所遇到的许多问题,但是到底有没有真正变得更好的东西?他错过了什么吗?您认为不是更好的解决方案吗? 另外,请注意,我所说的是D 2.0,而不是D 1.0。

16
人们为什么使用C这么危险?
我正在考虑学习C。 但是,如果人们可以“危险地”使用C(或C ++),为什么还要使用它呢? 危险是指指针和其他类似的东西。 就像堆栈溢出问题一样,为什么gets函数如此危险以至于不应该使用它?。为什么程序员不仅仅使用Java或Python或其他编译语言(如Visual Basic)?
132 c++  c 

14
自动会使C ++代码更难理解吗?
我看过Herb Sutter的一次会议,他鼓励每个C ++程序员使用auto。 前段时间,我不得不阅读C#代码var,该代码被广泛使用,并且代码很难理解-每次var使用时,我都必须检查右侧的返回类型。有时不止一次,因为一段时间后我忘记了变量的类型! 我知道编译器知道类型,而不必编写它,但是我们应该为程序员而不是为编译器编写代码已广为接受。 我也知道这更容易编写: auto x = GetX(); 比: someWeirdTemplate<someOtherVeryLongNameType, ...>::someOtherLongType x = GetX(); 但这仅写入一次,并且GetX()多次检查了返回类型以了解其类型x。 这让我感到奇怪-是否auto会使C ++代码更难理解?
122 c++  c++11 

11
是什么支持C ++可以比使用JIT的JVM或CLR更快的说法呢?[关闭]
我在许多问题中都注意到了SE上一个经常出现的主题,即一个持续的论点,即C ++比Java之类的高级语言更快和/或更有效。相反的论点是,由于JIT等原因,现代JVM或CLR可以同样高效,因为它可以处理越来越多的任务,而C ++ 仅在知道自己在做什么以及为什么以某种方式做事的情况下才更有效率。将会提高性能。这是显而易见的,并且很有意义。 我想知道一个基本的解释(如果有这样的事情...),以为什么和怎么样的任务一定是用C ++更快比JVM或CLR?仅仅是因为C ++被编译成机器代码,而JVM或CLR在运行时仍具有JIT编译的处理开销吗? 当我尝试研究该主题时,我发现的只是上面概述的相同论点,而没有任何确切的信息来了解如何准确地将C ++用于高性能计算。
119 java  c++  performance  jit 

13
我们是否应该避免C ++具有但Java没有的语言功能?
假设我只能在项目环境中使用C ++。防止使用C ++拥有但Java没有的某些语言功能是否很好(例如:多重继承,运算符重载)? 我认为原因是: 由于Java比C ++更新,因此如果Java没有提供C ++具有的功能,则意味着该功能不好,因此我们应避免使用它。 具有C ++特定功能(例如:朋友功能,多重继承)的C ++代码只能由C ++程序员维护或检查,但是如果我们只编写Java之类的C ++(没有C ++语言特定的功能),则两者都可以维护或检查代码。 C ++和Java程序员。 有一天可能会要求您将代码转换为Java 没有C ++特定功能的代码通常更易于维护 每个C ++语言特定的功能(例如:多重继承)都应具有在Java中实现的替代方法。如果不是这样,则意味着设计模式或代码体系结构存在问题。 真的吗?
110 java  c++  code-quality 

4
“长期”禁令有意义吗?
在当今的跨平台C ++(或C)世界中,我们拥有: Data model | short | int | long | long long | pointers/size_t | Sample operating systems ... LLP64/IL32P64 16 32 32 64 64 Microsoft Windows (x86-64 and IA-64) LP64/I32LP64 16 32 64 64 64 Most Unix and Unix-like systems, e.g. Solaris, Linux, BSD, and OS X; z/OS …

10
即使不是所有的同事都了解元编程,也可以使用元编程吗?
我使用了大量的元编程来避免重复的任务,并建立更安全使用的抽象。 我最近搬到了一个新工作,在一个更大的团队中工作,这让我的一些同事感到担忧,因为他们不理解。 我总是尽力利用这种语言的全部潜力,但是我的一些(并非全部)同事认为这是一种风险(有些人欢迎这种方法)。 我同意编写团队中其他人无法理解的代码是一个问题。另一方面,我们都是C ++专业开发人员,我认为我们应该追求更高的标准,而不是使用类编写C。 我的问题是,谁是对的,我该怎么办? 澄清: 试图充分利用语言的潜力,并不意味着我在所有问题上都投入了TMP。C ++是一个工具箱,对我而言,C ++熟练程度是指能够使用包装箱中的所有工具,以及为特定工作选择合适的工具。

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.