"->"和"."的区别
->运算符的左边操作数一般是指针,含义是引用指针指向对象的成员,.运算符左边操作数是引用或者类实例,含义是调用实例的成员。一般情况下,只有两个运算符中只有一个能用:
指针用->,引用和实例用.
例如
class A
{
public:
int GetA();
};
A * p;//指针
A a;//定义一个实例
A & r=a;//定义一个引用
//正确的写法
p->GetA();
a.GetA();
r.GetA();
其中p只能用->,如果写 p.GetA()则会出现编译错误,因为指针不能用.运算符。
同样,a和r只能用.,如果用->则会出现编译错误,例如r->GetA()是错误的。
如果有一个左边变量能够同时用->和.,说明->运算符被重载了。通常出现在stl的iterator中,比如
list::iterator it;
it.operator++();
it->GetA();
stl的iterator是一个类,一般不要直接用.和->;因为.调用了iterator类本身的成员函数,实际上iterator本身的成员函数没什么用。而->运算符被重载了,用于调用iterator本身指向元素的成员,比如it作为一个迭带器当前指向一个list中的A的元素,那么it->GetA()就是调用这个A类型元素的成员。
一般来说对iterator只需要用->,不需要用.,一般认为用->可能会有兼容性问题。所以最用用*,也就是
(*it).GetA()。
和、与、跟、同这四个在同时作连词或介词时意思完全相同。
过去听我的教师说,曾经有人将其进行过分工,让和、与专门作连词,让跟、同专门作介词,但直到今日也没有权威人士或部门认可。所以有时它们出现在句子里是难以让人辨别是介词还是连词的。如:
小王跟小李上山了。
小王和小李是十年前结婚的。
小王与小李去商店玩了。
小王同小李正在打球。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!