小编Kla*_*aim的帖子

在哪种情况下,(a = b)是个好主意?

可能重复:
无意中使用=而不是==

C++编译器通过您编写的警告让您知道

if( a = b ) { //...
Run Code Online (Sandbox Code Playgroud)

并且这可能是一个错误,你当然想写

if( a == b ) { //...
Run Code Online (Sandbox Code Playgroud)

但有没有一种情况应该忽略警告,因为这是使用这个"功能"的好方法?我没有看到任何代码清晰度可能的原因,那么它有用吗?

c c++

11
推荐指数
4
解决办法
1万
查看次数

`#pragma once`是否成为C++ 0x?

标题说明了一切.已#pragma once被标准化了的C++ 0x?我不知道任何编译器没有提供它的实现,几乎总是相同的语义和名称.

c++ pragma c-preprocessor c++11

11
推荐指数
2
解决办法
2922
查看次数

基本的C++继承受到我的编译器的挑战?

#include <iostream>

class Base
{
public:
    virtual void ok( float k ){ std::cout<< "ok..." << k; }
    virtual float ok(){ std::cout<< "ok..."; return 42.0f; }
};

class Test : public Base
{
public:
    void ok( float k ) { std::cout<< "OK! " << k; }
    //float ok() { std::cout << "OK!"; return 42; }
};

int main()
{
    Test test;
    float k= test.ok(); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

GCC 4.4下的汇编:

hello_world.cpp: In function `int main()`:
hello_world.cpp:28: erreur: no matching function for call …
Run Code Online (Sandbox Code Playgroud)

c++ gcc

11
推荐指数
2
解决办法
316
查看次数

什么是ISO语言?

这实际上是3个问题:

  1. 编程语言被认证为"ISO"需要什么?
  2. ISO认证对语言的保证是什么?其他语言是否可以相同?
  3. ISO语言列表?

(制作社区维基 - 不确定组织,也许应该编辑第一个答案以获得完整的ISO语言列表?)

language-agnostic iso programming-languages

10
推荐指数
2
解决办法
2740
查看次数

内联函数静态常量是否唯一?

这是一个示例代码:

enum Foo // or enum class whatever
{   BAR
,   STUFF
};

inline const char* to_string( const Foo& foo )
{
    static const char* const NAMES[] = 
    {    "BAR"
    ,    "STUFF"
    };
    // let's assume I have some boundary checks here, it's not the point
    return NAMES[foo];
};
Run Code Online (Sandbox Code Playgroud)

此函数是内联的,位于多个编译单元中使用的标头中.这里的目标是在没有使用此函数的情况下使编译器不执行任何操作.

问题:

  1. C++标准是否保证NAMES只存在于一个目标文件中,还是由编译器决定还是保证每个目标文件都有它的副本?
  2. 如果有多个副本,它会是一个链接问题(我假设我无法测试足够的编译器来检查).
  3. gcc,msvc和clang都会通过使最终的二进制文件只有一个NAMES实例来优化这种情况吗?

c++

10
推荐指数
1
解决办法
221
查看次数

明确的N-ary构造函数?

在此演示文稿中:http://qtconference.kdab.com/sites/default/files/slides/mutz-dd-speed-up-your-qt-5-programs-using-c++11.pdf

作者建议N-ary构造函数受益于C++ 11版本的explicit关键字.

如果你有多个构造函数参数,那么在C++ 11中有什么变化可以使这个关键字变得有用?

c++ constructor explicit-constructor c++11

10
推荐指数
1
解决办法
721
查看次数

一个大型泳池或几个特定类型的泳池?

我正在研究一款需要高性能的视频游戏,所以我试图设置一个好的记忆策略或游戏的特定部分,即游戏"模型",即游戏表现.我有一个包含整个游戏表示的对象,里面有不同的管理器,以保持表示符合游戏规则.每个游戏实体当前都是由特定类型的工厂生成的,所以我有几个工厂允许我按照自己的意愿隔离和更改这些实体的内存管理.

现在,我正在选择这两种选择之间:

  1. 为每种类型设置一个内存池:这将允许真正快速的分配/释放和最小的碎片,因为对象池已经知道分配的对象的大小.困扰我的一件事是让几个像这样的池分开,可能会让其他解决方案更有效......
  2. 有一个大内存池由一个游戏表示的所有工厂共享 :(使用类似boost :: pool和一些适配器功能)这样我就可以将所有游戏对象内存分配在一起并且可以为游戏分配一个比特我已经知道了总的大小(并非总是如此).我不确定这是一个比A更好的解决方案,因为池内可能存在碎片,因为在同一个池中会有不同大小的对象,但对于内存分析和其他问题修复来说它看起来更容易.

现在,我对A有了一些现实世界的经验,所以我对B没有经验,并希望对这些解决方案有一些建议,对于一个长寿项目.对于长寿项目来说,哪种解决方案似乎更好?为什么?(注意:在这种情况下,确实需要一个池,因为游戏模型也用于游戏编辑,所以会有很多小对象的分配/释放).

编辑澄清:如果(我还不清楚)我正在使用C++

c++ memory pool

9
推荐指数
1
解决办法
3243
查看次数

C++ 0x RValue引用或其他功能会对流性能产生影响吗?

大量的分析表明,当需要性能(速度)时,C++流不是执行文件或文本字符串操作的最佳方式.尽管如此,标准流仍然是保证类型安全的好方法.

根据我的阅读,大部分问题是因为流实现必须1)创建/复制许多小对象2)完全通用(不管理char和wchar的方式相同吗?)等.

无论如何,我在想,也许某些C++ 0x会允许实现者至少限制对象创建/复制,也许还有其他功能可以允许其他性能改进,也许允许达到printf()性能?

有直接影响吗?或者我们是否必须等待新的实施?或者我们还需要一个新的(类似STL)流库吗?

c++ iostream c++11

9
推荐指数
1
解决办法
318
查看次数

如何用for-range循环切片?的C++ 0x

在C++ 0X中使用基于范围的循环,我知道我们将能够:

std::vector<int> numbers = generateNumbers();

for( int k : numbers )
{
   processNumber( k );
}
Run Code Online (Sandbox Code Playgroud)

(用lambda编写可能更简单)

但是,如果我只想将processNumber(k)应用于数字的一部分,我该怎么办?例如,我应该如何编写for for循环以将processNumber()应用于数字的一半(头部或尾部)?像Python或Ruby一样允许"切片"吗?

c++ c++11

8
推荐指数
2
解决办法
2867
查看次数

在创建基于XML的新格式或语言之前,开发人员应该知道什么?

假设您必须编写一种基于xml(无选择)的语言,最终将成为某种"标准"格式,被全球数十亿应用程序使用,或者至少您希望它. 该语言将类似于互联网的HTML,但在另一个特定的域中.一些非常简单和描述性的东西,将由工具和其他应用程序解释.

现在让我们说你对XML的工作方式有了基本的了解(你知道标签是如何工作的,它们可能有属性,元素中可能有元素......).你真的很了解这个领域,但你之前从未编写过语言或基于xml的格式规范(除了公司内部工具的一些基本xml格式).

你还需要知道什么才能正确地完成你的工作?也许某些XML语言特定的功能?也许使用XSD文件作为规范文件?

总结一下:在为这种语言设计和编写规范时,最佳做法是什么?

xml

8
推荐指数
1
解决办法
268
查看次数