mfc中的.和->有什么区别?

天地英豪 2009-09-30 11:28:59
以前用VC学C++的时候,"."和"->"的作用是一样的,不知道在mfc中怎么不一样了?
...全文
245 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
maple_zhj 2009-09-30
  • 打赏
  • 举报
回复
指针用 ->
实体用 .
副组长 2009-09-30
  • 打赏
  • 举报
回复
C语言用"."和"->",VC里面改成了这个“。”和这个“=》”。
dirdirdir3 2009-09-30
  • 打赏
  • 举报
回复
->的前面是指针,不过在com里面好像有些区别主要是有的类重载了->.......
flymoon99 2009-09-30
  • 打赏
  • 举报
回复
如果是在堆中申请的对象用->
如果是在栈中申请的对象用.
luckzengwei 2009-09-30
  • 打赏
  • 举报
回复
.是相对于对象本身的函数和变量

而 -> 是相对于对象的地址
  • 打赏
  • 举报
回复
说说怎么不一样了呢。
  • 打赏
  • 举报
回复
同意1,2,3楼的!
[Quote=引用楼主 wangshiwei1105 的回复:]
以前用VC学C++的时候,"."和"->"的作用是一样的,不知道在mfc中怎么不一样了?
[/Quote]
哪里不一样?说说看!
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xylicon 的回复:]
.是相对于对象本身的。

而 -> 是相对于对象的地址(或者说指针吧)的
[/Quote]
xylicon 2009-09-30
  • 打赏
  • 举报
回复
.是相对于对象本身的。

而 -> 是相对于对象的地址(或者说指针吧)的
yuhudie203 2009-09-30
  • 打赏
  • 举报
回复
.前面是一个对象 实体
->前面是一个指针 实体的地址
都是用来操作成员函数和成员变量的
那里不一样?
  • 打赏
  • 举报
回复
yun
天地英豪 2009-09-30
  • 打赏
  • 举报
回复
谢谢 codewarrior(会思考的草) !
会思考的草 2009-09-30
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 wangshiwei1105 的回复:]
引用 21 楼 codewarrior 的回复:
你看到的极有可能是一个ATL封装的智能指针类……
小心此类是不是重载了->运算符。

好眼光!
C/C++ code
#import"C:\Program Files\Common Files\system\ado\msadox.dll"
ADOX::_TablePtr m_pTable=NULL;
ADOX::_TablePtr是这个类型_COM_SMARTPTR_TYPEDEF(_Table, __uuidof(_Table));
确实是智能指针!
[/Quote]
智能指针其实是一个class,只不过伪装成了指针。它利用了变量超出作用域自动调用析构函数的特性,把释放资源的代码写到智能指针的析构函数里。
既然是伪装成指针,指针所常用的操作它就必须要全部支持。譬如->运算符,*解引用,这些统统都是用运算符重载来实现的。
天地英豪 2009-09-30
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 codewarrior 的回复:]
你看到的极有可能是一个ATL封装的智能指针类……
小心此类是不是重载了->运算符。
[/Quote]
好眼光!

#import "C:\Program Files\Common Files\system\ado\msadox.dll"
ADOX::_TablePtr m_pTable=NULL;

ADOX::_TablePtr是这个类型_COM_SMARTPTR_TYPEDEF(_Table, __uuidof(_Table));
确实是智能指针!
yuhudie203 2009-09-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 wangshiwei1105 的回复:]
谢谢各位的回答!
C/C++ code
ADOX::_TablePtr m_pTable=NULL;
m_pTable.CreateInstance();
m_pTable->Columns.CreateInstance();
在上面的代码中m_pTable不能通过“.”来访问Columns,只能用“->”。
同样m_pTable的CreateInstance只能通过“.”来访问,而不能用“->”来访问。
希望高手们给予解答!
[/Quote]
你细看下这个m_pTable
首先 有m_pTable = NULL;对象一般没有这样的赋值吧
再者用匈牙利命名法分析下 m_pTable m代表成员 p代表这是一个指针变量
也就是说这是一个指针 引用成员变量自然要用->
会思考的草 2009-09-30
  • 打赏
  • 举报
回复
你看到的极有可能是一个ATL封装的智能指针类……
小心此类是不是重载了->运算符。
zpf82118 2009-09-30
  • 打赏
  • 举报
回复
不是MFC的问题,调用一个对象的方法是,有时可能会返回一个实例句柄,而句柄与执着指针类似,所以要具体看到底得到的是什么,实例就用'.',指针就用‘->’。
哈利路亚1874 2009-09-30
  • 打赏
  • 举报
回复
.是相对于对象本身的函数和变量

而 -> 是相对于对象的地址
behurry 2009-09-30
  • 打赏
  • 举报
回复
楼主太新了,要加油学习了
roman_v 2009-09-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 flymoon99 的回复:]
如果是在堆中申请的对象用->
如果是在栈中申请的对象用.
[/Quote]


不是这么回事把,就是简单的指针用-> 对象用.

calss A
{
int m;
}
A a;这个还是在堆把。。
A *pa=&a;
用的时候还是
a.m
pa->m
加载更多回复(6)
VC++视频笔记资料 一、MFC的概念和作用   1、什么是MFC?      全称:Microsoft Foundation Class Library(微软基础类库)      1-MFC从硬盘存在形式来说就是一个库(静态MFC库、动态MFC库)      2-MFC从原理来说还是一个程序框架   2、为什么使用MFC?      基于框架编程,提高工作效率,减少开发周期,降低开发成本。 二、几个重要的头文件   afx.h--包含了MFC绝大部分类的声明   afxwin.h--包含了afx.h和windows.h   afxext.h--提供了对扩展类的支持,例如:工具栏、状态栏...   附:以Afx...开头的函数,可以确定为MFC的一个全局函数;     以::...开头的函数,可以确定为Win32的API函数; 三、MFC应用程序的分类   1、使用MFC库制作自己的控制台程序     相比Win32控制台程序:     多了一个全局对象 CWinApp theApp     入口函数不同于以往的入口函数   2、使用MFC库制作自己的静态库程序   3、使用MFC库制作自己的动态库程序     1--使用MFC库制作自己的规则动态库(静/动态MFC库)     2--使用MFC库制作自己的扩展动态库     区别:规则库可以被所有程序调用,扩展库只能被支持MFC的程序调用   4、使用MFC库制作自己的窗口程序     1--单文档视图构架程序       CFrameWnd-框架窗口类,封装了关于框架窗口的操作       CWinApp-应用程序类,封装了关于程序流程的操作       CDocument-文档类,封装了关于数据的操作(提取、转换、存储...)       CView-视图窗口类,封装了关于视图窗口的操作(绘图)      2--多文档视图构架程序       CMDIChildWnd-子框架窗口类,封装了关于子框架窗口的操作       CMDIFrameWnd-主框架窗口类,封装了关于主框架窗口的操作       CWinApp-应用程序类,封装了关于程序流程的操作       CDocument-文档类,封装了关于数据的操作(提取、转换、存储...)       CView-视图窗口类,封装了关于视图窗口的操作(绘图)     3--对话框构架程序       CWinApp-应用程序类,封装了关于程序流程的操作       CDialog-对话框窗口类,封装了关于对话框窗口的操作

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧