谁能解释一下"using"的意思?

Could someone explain the meaning of "using"?

我不明白下面在C++中using的用法。 与 typedef 有什么区别? 有人可以举例说明吗?

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

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

A typedef-name can also be introduced by an alias-declaration. The identifier following the using keyword becomes a typedef-name [..]. It has the same semantics as if it were introduced by the typedef specifier.

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

相当于

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

在您的示例中typedef没有区别。

它们是相同的:

typedef int a;
using a = int;

总的来说,它更通用,这就是引入它的原因:

  • 可以模板化

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

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