有人可以解释"使用"的意思吗?

时间:2015-01-31 00:54:08

标签: c++ using

我不明白以下在C ++中使用的用法。 typedef有什么区别? 有人可以用一些例子来解释它吗?

template<typename DataType>
class DataWriter
{
using ObjType = std::function<void(DataType)>
// ...
}

2 个答案:

答案 0 :(得分:4)

您的示例中typedef没有区别。

那些是相同的:

typedef int a;
using a = int;

一般来说,它更具通用性,这就是它被引入的原因:

  • 可以模板化。

    template<class X> using smart = std::unique_ptr<X>;
    
  • 可用于将符号导入当前范围。

    struct Derived : Base {
        using Base::Fun;
    };
    

答案 1 :(得分:2)

没有区别。 [dcl.typedef] / 2:

  

typedef-name 也可以由 alias-declaration 引入。该   using关键字后面的标识符变为 typedef-name   [..]。 它具有相同的语义,就像它被引入一样   typedef说明符。

using ObjType = std::function<void(DataType)>;

相当于

typedef std::function<void(DataType)> ObjType;