【发布时间】:2019-09-13 01:15:40
【问题描述】:
假设我有这个代码
std::string s = "hello";
std::string* p = &s;
int l = p.length();
Visual Studio 和 CLion 知道点运算符不正确。实际上,当我按下键 . 时,两个 IDE 都将击键提交为->。
既然 C++ 是有类型的,它就知道 p 是一个指针,为什么不去 combine 。和 -> 合二为一?
语法可以是一直使用.,如果p是指针,先解引用,否则直接获取它的成员?
【问题讨论】:
-
为什么不结合。和 -> 合二为一? 因为它们是不同的东西。对于智能指针,你也可以同时使用。
-
注意
->可以重载,而.不能。 -
冗余很有帮助。此外,有些智能指针需要 both
.和->来处理不同的事情。 -
s.begin().和s.begin()->的 CLion 和 VS 提示是什么? ;) -
那是 Java。