是否可以使用名称不同的两个功能,但相同的功能共享功能主体?我们该怎么做呢?
template<typename _T>
class array {
public:
_T operator+(_T concatinate_operand); // concatinate to the array
_T append(_T concatinate_operand);
};
是的,这很容易实现。您只需从另一个调用函数即可执行实际的实现。看起来像
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*/ }
};
您将避免不必要的副本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句