【发布时间】:2014-08-15 20:14:47
【问题描述】:
我试图为一个简单的类重载取消引用运算符 (*) 和 (->)。
class Base
{
private:
int i;
int j;
public:
Base(int i): i(i), j(i), k(90) { }
void print()
{
cout << i << j << endl;
}
Base &operator*(void)
{
cout << "inside * operator" << endl;
return *this;
}
Base *operator->(void)
{
cout << "inside -> operator" << endl;
return this;
}
};
int main()
{
Base *b = new Base(100);
int j = b->k;
int l = (*b).k;
cout << j << l<< endl;
return 0;
}
这里重载的操作符-> 没有被调用。但是当我使用int j = (*b)->k 时,会调用重载运算符->。
我不明白为什么会这样?而且我根本无法调用重载的operator*。我知道我们重载这些运算符主要是为了智能指针,但我在这里没有得到原因。有什么帮助???
【问题讨论】: