有人可以解释在调用函数时使用foor-> bar吗?

时间:2015-06-04 19:24:35

标签: c++

是否与foo.bar从特定实例调用函数不同?我已经在教程中看到了它,但它从来没有被解释过,而且这个术语太过笼统,无法在谷歌上显示。

3 个答案:

答案 0 :(得分:1)

运算符operator->只能用于指针类型(在这种情况下foo->bar等同于(*ptr).bar)或重载operator->的类型(在这种情况下,语义依赖于过载本身。)

指针类型的示例可能是:

struct some {
    int x;
};

some a{10};
some* a_ptr = &x;

a.x = 10;
a_ptr->x = 10;

重载类型的示例可能是:

std::unique_ptr<some> a_ptr = std::make_unique<some>(10);
a_ptr->x = 10;

答案 1 :(得分:0)

foo->bar(*foo).bar的缩写。 (除非foo属于->做其他事情的类类型。

答案 2 :(得分:0)

当foo指向某种数据类型时,使用

foo-&gt; bar 当foo是类

的对象时使用foo.bar