是否可以使用具有不同功能名称的两个功能,但相同的功能共享功能体?我们怎么做呢?
template<typename _T>
class array {
public:
_T operator+(_T concatinate_operand); // concatinate to the array
_T append(_T concatinate_operand);
};
答案 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*/ }
};
您将避免不必要的副本。