2015-01-21 20:09:42
C++ 中 -> 与 . 的区别是什么呢?
首先肯定,两者是有不同的。因为我在VC++6.0中的代码:
//menu.Detach();
menu->Detach();
如果是用menu.Detach(); 就会成功,而menu->Detach();就会提示如下的错误:
E:\VC_WORKSPACE\Menu\MainFrm.cpp(102) : error C2227: left of '->Detach' must point to class/struct/union
通过百度搜索得到的结果是:
from:http://zhidao.baidu.com/link?url=qO4b86bUlDzEk9jlqRNk1bdpo8lCnchW6WPEXeuxc09NoWUkGkI2EJIJxeIfYfBXy3zEi72Yao_MCnH_6Ijnya
主要用于访问类的成员,->主要用于类类型的指针访问类的成员,而.运算符,主要用于类类型的对象访问类的成员。 举例 class A {public :int a} A ma; A *p=&ma; 那么指针p应使用->来访问成员a,比如p->a,而ma应使用.来访问,比如ma.a区别就在这里,凡是指针就使用->,对象就使用.运算符。
两者分析对比,我认为通过百度搜索的这个结果是正确的。
如果是类类型的指针就用-> ,如果是类类型的对象,就用.访问它的成员变量或函数。
我在自己的程序中的代码段也能证明,如下:
//装载菜单
//下面是用类类型对象的方法,运行结果是正确的。
CMenu menu;
//menu.LoadMenu(IDR_MAINFRAME);
//SetMenu(&menu);
//menu.Detach();
//下面是类类型指针的方法,在写->在VC++60中就会提示成员函数。运行结果是成功
//但是要注意给pMenu做初始化: pMenu = &menu
CMenu * pMenu;
pMenu = &menu;
pMenu->LoadMenu(IDR_MAINFRAME);
SetMenu(pMenu);
pMenu->Detach();