Gri*_*ngo 2 c++ syntax pointers
可能重复:
为什么C区分 - >和.?
程序员必须区分.和->访问对象成员时的真正原因是什么?
void foo( Point &p ) {
p.x ;
p->y; // syntax error
}
void foo( Point *p ) {
p.x ; // syntax error
p->y;
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,无论如何,他们都指的是一个物体,p.
为什么我每次都要检查p是什么?编译器能不能理解?
为什么他们不允许它接受.两者的语法?这也适用于堆栈对象.
如果是由于C传统,
.和->访问者?超过15年,我一直谦卑地认为编译错误是我的错!
因为p->d实际意味着(*p).d.它进行解除引用,然后进行成员访问.引用的行为类似于对象,因此它们不需要解除引用(它们也是C++特性,而指针是从C继承的); 它一直保持这种向后兼容性.
C++充满了这样的不一致,但通常没有更好的选择来添加新功能并保持旧代码的正常运行.重写旧代码不是一种选择.
因为你可能有一个智能指针.在这种情况下,您可以使用智能指针的成员.和使用真实对象的成员->.
| 归档时间: |
|
| 查看次数: |
459 次 |
| 最近记录: |