Questions tagged «c++»

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

6
如果我不了解C#,如何聘请优秀的C#开发人员?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我是C ++开发人员。我知道Windows如何在本机级别上工作,但是我不是C#和.NET的专家。现在,我需要在团队中使用C#开发人员(我所有的开发人员都是C ++)。如果我不熟悉C#,该如何聘请优秀的C#开发人员?如何提出问题,如何测试答案是好的还是愚蠢的错误?
15 c#  c++  hiring 

6
如何解释为所有操作系统编写通用的跨平台C ++代码并交付产品并不是那么容易?
我们公司为Windows发行了一系列桌面产品,许多Linux用户在论坛上抱怨我们应该是几年前为Linux编写的产品版本,而我们不这样做的原因是 我们是一家贪婪的公司 我们所有的技术专家都是白痴 我们的平均产品约为300万行C ++代码。 我和我的同事的分析如下: 编写跨平台的C ++代码并不是那么容易 准备大量分发包并为所有广泛的Linux版本维护它们需要时间 我们的估计是Linux市场占所有用户的5-15%,而这些用户可能不想为我们的努力付出代价 当提出这个问题时,人们的回答再次是,我们是贪婪的不合格白痴,而当一切都做对了时,这一切都是简单而轻松的。 我们对编写跨平台代码和维护大量分发包需要付出大量努力这一事实的评估有多合理?我们在哪里可以找到一些简单而详细的现实故事分析,这些分析显示出毫无疑问的阴影,确切地需要付出多少努力?

7
游戏编程:C#还是C ++?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我已经决定我真正想要做的是游戏编程。因此,问题是,作为一个想学习自学编程的18岁孩子,C#和C ++之间最适合的编程语言是什么?(我应该声明我不关心Unix,因为我相信Windows仍将是使用最多的OS) 我知道C ++的基础知识,但不了解C#。我知道C ++有更多的教程指南,dll和类似的东西,而C#则没有,但是学习和使用一个人来开发程序要容易得多,但是即使程序被混淆,我也已经读过很容易找到它的来源。 好吧,我有点想先关注基础知识,我必须说我偏爱C ++,只是因为它对我来说更合适,但我必须考虑我一个人工作。因此,即使我喜欢它,也不是最好的选择。 我真的不确定要去哪一个,我已经在各种网站上阅读了很多线程,而且看来C#比C ++越来越流行。但是,是的,我也指定我要进行游戏编程。因此,我需要知道一些不仅是“由于C.没有C ++,因为.net内存处理而使C#更容易”的更好的要点,因为我无法找到它。

10
在慢速编译环境中进行编码的最佳方法是什么
我曾经以TDD风格使用C#进行编码-编写/或更改一小段代码,在10秒内重新编译整个解决方案,然后重新运行测试。简单... 几年来,这种开发方法对我一直非常有效,直到去年我不得不回到C ++编码的那一刻起,我才真正感觉到我的生产率从此大大降低了。C ++作为一种语言不是问题-我有很多C ++开发人员的经验……但是过去。 对于一个小型项目,我的工作效率仍然可以,但是当项目规模增加时,情况会变得更糟,一旦编译时间达到10分钟以上,它就会变得非常糟糕。如果发现错误,则必须再次开始编译,等等。这简直令人沮丧。 因此,我得出的结论是:(像以前一样)一小部分是不可接受的-任何建议,当我手动检查代码时(不依赖快速的C#编译器)如何使自己养成一个小时左右的古老编码习惯,并且仅在几个小时内重新编译/重新运行一次单元测试。 使用C#和TDD,以进化的方式编写代码非常容易-经过十几次迭代之后,我开始的任何废话都以良好的代码结尾,但对我而言不再起作用(在缓慢的编译中)环境)。


6
什么是“使用命名空间”污染?
我在看[这里]的Google编码指南,他们不建议您使用using namespace或namespace::function-如果我没有误解的话。 这也适用std吗?cout<<没有它是行不通的。本书,推荐相同。那么,如何去使用cout<<没有using namespace std;或std::cout<<? 推荐的方法是什么?std::cout<<?大多数C ++教科书都向初学者讲授错误的using namespace std;编码实践吗?
15 c++  coding-style 

8
为什么要用C ++编写编译器?
我想知道为什么C ++是编写编译器的好选择。当然,C对此也有好处,因为许多编译器都是用C或C ++编写的,但是这次我对C ++更加感兴趣。有什么好的理由吗?我一直在互联网上寻找该信息,但找不到任何好的理由。
14 c++  compiler 

7
使类方法传递类变量是一个坏主意吗?
这就是我的意思: class MyClass { int arr1[100]; int arr2[100]; int len = 100; void add(int* x1, int* x2, int size) { for (int i = 0; i < size; i++) { x1[i] += x2[i]; } } }; int main() { MyClass myInstance; // Fill the arrays... myInstance.add(myInstance.arr1, myInstance.arr2, myInstance.len); } add因为它是一个类方法,已经可以访问它需要的所有变量了,所以这不是一个好主意吗?有什么理由我应该或不应该这样做?

3
我应该添加库的来源而不是链接到它们吗?
我是C ++的新手,所以我不确定如何最好地处理小的依赖项(例如,脚本语言或JSON / YAML / XML解析器)。 我应该创建单独的项目并将其链接为静态库,还是仅将.h / .cpp文件放入我的主项目有不利之处? 后者似乎容易得多,因为我花了几个小时来处理不兼容的库(构建库时编译器设置不同),但是我不想以错误的方式开始学习C ++。 如果最好将它们保留为单独的库,那么我该如何最好地保持编译标志同步,以便.lib / .a文件成功链接到我的应用程序? (我目前正在使用MSVC 2015,但目标是使用XCode / clang在Mac OS X和iOS上进行编译,因此我必须处理至少3种不同类型的库(Win x86,Mac x64,ARM) )
14 c++  linking 

2
为什么使用C ++库如此复杂?
首先,我想指出的是,我热爱C ++,并且我是认为C ++比Java编写容易的人之一。除了一件小事:库。 在Java中,您只需将一些jar添加到构建路径即可。 在C ++中,通常必须为头文件和库本身设置多个路径。在某些情况下,您甚至必须使用特殊的构建标志。我主要使用Visual Studio,代码块,而根本没有使用IDE。在谈论使用外部库时,所有这三个选项没有太大差异。 我不知道为什么没有比这更简单的选择了?就像拥有一个特殊的.zip文件一样,它可以将您需要的所有东西都放在一个地方,因此IDE可以为您设置构建标志进行所有工作。有没有技术上的障碍?
14 java  c++  libraries 

7
与C ++相比,C#是否能给您“更少的绳索来吊死自己”?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 乔尔·斯波斯基(Joel Spolsky)将C ++定义为“足以使自己吊死的绳索”。实际上,他在总结Scott Meyers的“ Effective C ++”: 这是一本书,基本上说,C ++足以将自己吊死,然后再延伸几英里,然后再变成一些伪装成M&M的自杀药。 我没有这本书的副本,但是有迹象表明,这本书的大部分内容与管理内存的陷阱有关,这似乎在C#中显得毫无意义,因为运行时会为您管理这些问题。 这是我的问题: C#是否可以避免仅通过精心编程才能避免的C ++陷阱?如果是这样,在何种程度上以及如何避免? 新C#程序员应该注意C#中是否存在新的,不同的陷阱?如果是这样,为什么不能通过C#设计来避免它们?

5
Java中未定义的行为
我在SO上阅读了这个问题,讨论了C ++中一些常见的未定义行为,我想知道:Java是否也具有未定义的行为? 如果是这样,那么Java中未定义行为的一些常见原因是什么? 如果不是,那么Java的哪些功能使其摆脱了此类行为,为什么没有使用这些属性实现最新版本的C和C ++?

3
何时使用typedef?
我对于是否以及何时应该在C ++中使用typedef感到有些困惑。我觉得这是可读性和清晰度之间的平衡。 这是一个没有任何typedef的代码示例: int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { static std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int> lookup_table; std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int>::iterator lookup_it = lookup_table.find(lookup_key); if (lookup_it != lookup_table.end()) return lookup_it->second; ... } IMO很丑。因此,我将在函数内添加一些typedef以使其看起来更好: int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { typedef std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator> Lookup_key; typedef std::map<Lookup_key, int> Lookup_table; static Lookup_table lookup_table; Lookup_table::iterator lookup_it = lookup_table.find(lookup_key); …
14 c++  coding-style 

7
像int这样的typedef原始类型有多远
我已经看到了C ++代码,例如以下带有许多typedefs的代码。 typedef与使用C ++原语相比,使用许多此类有什么好处?是否有另一种方法也可以实现这些好处? 最后,数据全部以位和字节的形式存储在内存中或通过导线传输,这真的重要吗? types.h: typedef int16_t Version; typedef int32_t PacketLength; typedef int32_t Identity; typedef int32_t CabinetNumber; typedef int64_t Time64; typedef int64_t RFID; typedef int64_t NetworkAddress; typedef int64_t PathfinderAddress; typedef int16_t PathfinderPan; typedef int16_t PathfinderChannel; typedef int64_t HandsetSerialNumber; typedef int16_t PinNumber; typedef int16_t LoggingInterval; typedef int16_t DelayMinutes; typedef int16_t …

6
受保护方法的真实场景
今天,我注意到我基本上从不使用protectedC ++代码中的方法,因为我很少感到需要调用父级的非公共方法。我确实在模板方法模式中使用了Java中的protected,但是由于您可以在C ++中覆盖私有方法,因此我也不需要protected。 那么,在哪些实际场景中我想protected在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.