在某些 C++ 标准库中定义 class 而不是函数有什么好处?
what's the advantage of defining a class instead of a function in some c++ standard library?
最近注意到C++ std::less是一个class,虽然它只是比较两个objects.Here的值是一个示例代码:
template <class T> struct less {
bool operator() (const T& x, const T& y) const {return x<y;}
typedef T first_argument_type;
typedef T second_argument_type;
typedef bool result_type;
};
那么定义一个 class 而不是一个函数有什么好处呢?
而且我还想知道为什么在 class 中没有数据成员的情况下使用 'const' 关键字?
主要用作模板参数,如std::set<int, std::less<int>>
。
Class 接口中的模板参数,如 std::set
用于代替指向函数的指针,以便能够传递 do 具有的其他类似函数的对象一些数据成员。此外,将其作为模板参数有助于编译器优化,尽管现代编译器在某些情况下也可以优化掉函数指针。
最近注意到C++ std::less是一个class,虽然它只是比较两个objects.Here的值是一个示例代码:
template <class T> struct less {
bool operator() (const T& x, const T& y) const {return x<y;}
typedef T first_argument_type;
typedef T second_argument_type;
typedef bool result_type;
};
那么定义一个 class 而不是一个函数有什么好处呢? 而且我还想知道为什么在 class 中没有数据成员的情况下使用 'const' 关键字?
主要用作模板参数,如std::set<int, std::less<int>>
。
Class 接口中的模板参数,如 std::set
用于代替指向函数的指针,以便能够传递 do 具有的其他类似函数的对象一些数据成员。此外,将其作为模板参数有助于编译器优化,尽管现代编译器在某些情况下也可以优化掉函数指针。