标签: c++

在C++中,什么是虚拟基类?

我想知道" 虚拟基类 "是什么以及它意味着什么.

让我举个例子:

class Foo
{
public:
    void DoSomething() { /* ... */ }
};

class Bar : public virtual Foo
{
public:
    void DoSpecific() { /* ... */ }
};
Run Code Online (Sandbox Code Playgroud)

c++ virtual-inheritance

389
推荐指数
6
解决办法
30万
查看次数

C/C++中是否有标准符号函数(signum,sgn)?

我想要一个函数,对于负数返回-1,对于正数返回+1. http://en.wikipedia.org/wiki/Sign_function 写我自己很容易,但似乎应该在某个标准库中.

编辑:具体来说,我正在寻找一个工作浮动的功能.

c c++ math

387
推荐指数
11
解决办法
34万
查看次数

"放置新"有什么用途?

有没有人曾经使用过C++的"贴牌新品"?如果是这样,那该怎么办?在我看来,它只对内存映射硬件有用.

c++ memory-management placement-new new-operator

385
推荐指数
18
解决办法
16万
查看次数

float和double有什么区别?

我已经读过双精度和单精度之间的区别.然而,在大多数情况下,floatdouble,似乎可以用一个可以互换的,即或其他的似乎不影响使用效果.这是真的吗?浮动和双打什么时候可以互换?它们之间有什么区别?

c c++ floating-point precision

384
推荐指数
9
解决办法
95万
查看次数

C++多行字符串文字

有什么方法可以在C++中使用多行纯文本,常量文字,还有Perl?也许有一些#include文件的解析技巧?我想不出一个,但男孩,那会很好.我知道它将在C++ 0x中.

c++ string-literals

383
推荐指数
9
解决办法
29万
查看次数

prepended double colon"::"是什么意思?

我在类中找到了这行代码,我必须修改它:

::Configuration * tmpCo = m_configurationDB;//pointer to current db
Run Code Online (Sandbox Code Playgroud)

而且我不知道究竟是什么意思是双重冒号前面的类名.没有它我会读:声明tmpCo作为指向类的对象的指针Configuration...但前面的双冒号混淆了我.

我还发现:

typedef ::config::set ConfigSet;
Run Code Online (Sandbox Code Playgroud)

c++ syntax namespaces scope-resolution global-namespace

383
推荐指数
8
解决办法
19万
查看次数

静态链接与动态链接

在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或读过以下内容,但我对这个问题的了解不足以保证它的真实性.

1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计.

2)(1)如果使用使用配置文件数据优化程序热路径的配置文件编译器,则不成立,因为使用静态链接,编译器可以优化代码和库代码.通过动态链接,您的代码可以进行优化.如果大部分时间都花在运行库代码上,那么这可能会产生很大的不同.否则,(1)仍然适用.

c c++ performance dynamic-linking static-linking

382
推荐指数
14
解决办法
22万
查看次数

Pretty-print C++ STL containers

Please take note of the updates at the end of this post.

Update: I have created a public project on GitHub for this library!


I would like to have a single template that once and for all takes care of pretty-printing all STL containers via operator<<. In pseudo code, I'm looking for something like this:

template<container C, class T, String delim = ", ", String open = "[", String close = "]">
std::ostream & operator<<(std::ostream & o, const C<T> …
Run Code Online (Sandbox Code Playgroud)

c++ templates operator-overloading pretty-print c++11

379
推荐指数
5
解决办法
4万
查看次数

如何将unique_ptr参数传递给构造函数或函数?

我是新手在C++ 11中移动语义,我不太清楚如何处理unique_ptr构造函数或函数中的参数.考虑这个引用自身的类:

#include <memory>

class Base
{
  public:

    typedef unique_ptr<Base> UPtr;

    Base(){}
    Base(Base::UPtr n):next(std::move(n)){}

    virtual ~Base(){}

    void setNext(Base::UPtr n)
    {
      next = std::move(n);
    }

  protected :

    Base::UPtr next;

};
Run Code Online (Sandbox Code Playgroud)

这是我应该如何编写unique_ptr参数的函数?

我需要std::move在调用代码中使用吗?

Base::UPtr b1;
Base::UPtr b2(new Base());

b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?
Run Code Online (Sandbox Code Playgroud)

c++ arguments unique-ptr c++11

377
推荐指数
5
解决办法
15万
查看次数

为什么枚举类优于普通枚举?

我听说有些人因为类型安全而建议在C++中使用枚举.

但这究竟意味着什么?

c++ enums class c++-faq

376
推荐指数
8
解决办法
22万
查看次数