【发布时间】:2010-01-07 17:36:23
【问题描述】:
假设我有这个结构:
struct movies
{
string title;
int year;
} my_movie, *ptrMovie;
现在我像这样访问my_movie:my_movie.year = 1999;
现在要访问指针,我必须这样做:ptrMovie->year = 1999;
为什么指针使用-> 运算符而普通数据类型使用. 运算符?他们有什么理由不能同时使用. 运算符?
【问题讨论】:
-
... 因为它会令人困惑?不同的操作 -> 不同的操作符。
-
糟糕...当我搜索它时它没有出现。对不起。
-
我认为“重复”是一个 C 问题,而不是 C++ 问题,但 C++ 是语法的原因很大程度上是因为 C 就是这样做的。不过,另一个问题中的一些答案也涉及 C++ 兼容性。
-
公平地说,如果我们看 C++ 而不是 C,另一个原因是
operator->需要与运算符区分开来。用于实现智能指针类(operator->必须是可重载的,以便通过指针传递,但operator.必须是独立的且不可重载,以允许访问智能指针对象本身的方法)。