具有相同主体不同名称的两个功能

时间:2018-06-13 18:53:58

标签: c++ function

是否可以使用具有不同功能名称的两个功能,但相同的功能共享功能体?我们怎么做呢?

template<typename _T>
class array {
public:
    _T operator+(_T concatinate_operand); // concatinate to the array
    _T append(_T concatinate_operand);
};

1 个答案:

答案 0 :(得分:5)

是的,这很容易实现。你只需要调用你从另一个实际执行的函数。那看起来像是

template<typename _T>
class array {
public:
    _T operator+(_T concatinate_operand) { return append(concatinate_operand); } // concatinate to the array
    _T append(_T concatinate_operand) { /*actual logic here*/ }
};

请注意,如果T很大,那么按值传递并获取副本会损害性能。如果您使用

之类的引用
template<typename _T>
class array {
public:
    _T& operator+(const _T& concatinate_operand) { return append(concatinate_operand); } // concatinate to the array
    _T& append(const _T& concatinate_operand) { /*actual logic here*/ }
};

您将避免不必要的副本。