关于 using, 请指点一下.
1.
比如说:
namespace my_namespace {
class my_class {
public:
void swap(my_class & other) {
using std::swap; // 这个工作的很良好.
using std::operator < <; // 这个地方怎么写?
// ....
}
};
}
对 operator 能使用 using 吗? 怎么写呢?
2.
std::for_each(a.begin(), a.end(), std::ptr_fun( std::operator delete ) );
上面, std::ptr_fun( std::operator delete ) 怎么写呢?
[解决办法]
(1)那个一般不用写,编译器确定一个函数时,不只看当前的namespace,还会看参数所在的namespace,因此,只要你operator < <的左操作数是std::ostream类型的,编译器就可以顺利找到std中相应的operaotr < <,从面完成函数名解析。
(2)这个问题是无法这样直接解决的,你只能自己封装一个函数来调用delete。因为delete不同于operator delete。前者是个关键字,其作用是先调用相应的析构,再调用后者。
而C++允许我们做为操作符来重载(从而也可以用operator的函数形式来调用的)仅仅是后者。而对于前者,那更像是个关键字,就像你无法用operator语法使用“for”这个关键字一样,你也不能通过某种语法使用自动调用析构函数delete关键字。