C++ 中->与.的区别是什么?

本文详细解析了C++中指向成员运算符->与成员访问运算符.的区别及应用场景。通过实例说明了两者分别用于类类型的指针和对象访问成员的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值