gpt4 book ai didi

c++ - 重载运算符 * 和 ->

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:35 26 4
gpt4 key购买 nike

我试图为一个简单的类重载取消引用运算符 (*) 和 (->)。

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* 。我知道我们重载这些运算符主要是为了智能指针,但我不明白这里的原因。有帮助吗???

最佳答案

b 是一个指针。您应用于 b->* 运算符取消引用指针,而不是它指向的东西。此外,该语言不允许您为指针类型重载这些运算符。

关于c++ - 重载运算符 * 和 ->,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com