`

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

    博客分类:
  • VC++
 
阅读更多

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

 

  • 大小: 6.8 KB
  • 大小: 24.2 KB
分享到:
评论

相关推荐

    gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.gz

    可用于交叉编译64-bit Armv8 Cortex-A, little-endian目标中的裸机程序、u-boot、Linux kernel、filesystem和App应用程序。gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.tar交叉编译器必须安装在64为主机...

    数据结构(C++)有关练习题

    实验一 复习C++有关知识<br>实验目的:<br>通过实验掌握下列知识: <br>1、复习C++有关基本知识;<br>2、熟悉VC编程、编译和调试环境;<br>内容及步骤:<br>编写一个类Complex,定义复数的加法、减法、乘法和除法运算,...

    Cortex-M3与Cortex-M4指南.part3,cortex-m3和m4的区别,C,C++源码.rar

    Cortex-M3与Cortex-M4指南.part3,cortex-m3和m4的区别,C,C++源码.rar

    Cortex-M3与Cortex-M4指南.part3,cortex-m3和m4的区别,C,C++源码.zip

    Cortex-M3与Cortex-M4指南.part3,cortex-m3和m4的区别,C,C++源码.zip

    Cortex-M3与Cortex-M4指南.part2,cortex-m3和m4的区别,C,C++源码.zip

    Cortex-M3与Cortex-M4指南.part2,cortex-m3和m4的区别,C,C++源码

    CyUSB3.SYS和CyAPI.LIB的源代码

    3.CyAPI => Application => Cpp: Streamer and bulkloop C++ application source code ->ReadMe.txt :Refer ReadMe.txt file for more information on streamer or bulkloop application. 4.ReadMe.txt

    mysql5.1中文手册

    MySQL与标准SQL的差别<br>1.8.6. MySQL处理约束的方式<br>2. 安装MySQL<br>2.1. 一般安装问题<br>2.1.1. MySQL支持的操作系统<br>2.1.2. 选择要安装的MySQL分发版<br>2.1.3. 怎样获得MySQL<br>2.1.4. 通过MD5校验和...

    C++智能指针:auto-ptr详解.pdf

    } } 运⾏结果: 我们可以看到在绑定时输出Simple:1,之后也能正常实现Test类中的功能,同时my_auto可以通过get⽅法进⾏裸指针赋值以及使⽤*进⾏ 解引⽤操作,与普通指针⽆异。最后函数结束后,在调⽤析构函数的...

    cmake-3.17.0-rc3.tar.gz

    新版跨平台cmake,CMake是一个跨平台的安装(编译...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    Symbian入门与环境配置

    GAGE QD 开发环境搭建(VC6版)<br>4. S60十大优秀软件<br>5. S60 系统手机类型及所用操作系统<br>6. S60 和 Symbian OS 的关系<br>7. S40与S60的区别<br>8. 诺基亚S60手机隐藏代码<br>9. Symbian 60系列 ...

    C语言和C++语言的区别是什么?快速入门C++编程的方法解析.docx

    C语言和C++语言的区别是什么?快速入门C++编程的方法解析 C++是一种高级编程语言,是C语言的一种扩展和改进。C++最早是由Bjarne Stroustrup在20世纪80年代初期开发的,主要目的是为了扩展C语言的功能,使其能够支持...

    cmake-3.6.0-rc1.tar.gz

    CMake是一个跨平台的安装(编译)工具,可以用简单...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    cmake-3.17.1-win64-x64.msi

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程),并且输出对应的makefile或者 project文件,能测试...的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    256/64 256->64 编码 C/C++

    实现256->64编码,与base64编码有区别,自己改的一个小函数,可以防止在VC下出现编码部分为0的情况。

    CMake-3.25.1-win-x86-64 跨平台的安装(编译)工具 离线版备份

    CMake-3.25.1-win_x86_64 跨平台的安装(编译)...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    cmake-3.18.0-rc1-win64-x64.zip

    CMake是一个跨平台的安装(编译)工具,可以用简单...这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 CMake 和 SCons 等其他类似系统的区别之处。

    MingW VC 之.a .lib .dll .def 关系

    (注意__cdecl和__stdcall调用约定的DEF文件书写区别。) 从DLL制作def文件: MinGW上的实现方法: pexports mydll.dll -o > mydll.def MSVC上的实现方法: 1. 制作一份dll的导出函数表,使用VC的dumpbin命令 ...

    MySQL中文参考手册.chm

    MySQL中文参考手册.chm<br/>449kb<br/><br/>0 译者序 <br/>1 MySQL的一般的信息<br/>1.1 什么是MySQL? <br/>1.2 关于本手册<br/>1.2.1 本手册中使用的约定 <br/>1.3 MySQL的历史 <br/>1.4 MySQL的主要特征 <br/>1.5...

    c/c++中结构体引用中箭头->与点.的区别

    首先介绍一下C++中的结构。对于一个结构来说, struct MyStruct { int member_a; };

Global site tag (gtag.js) - Google Analytics