怎么还有这种事儿?调成员既有“.”又有“->” 把我搞蒙了

boy_sunshine 2004-11-25 02:38:44
不是说对类的对象而言,调其成员用“.”;而对类的对象指针而言是“->”么?怎么有东东既有“.”又有“->”? .NET里ADO的几个指针就是:_ConnectionPtr,_CommandPtr,_RecordSetPtr.另外,ADO.NET是不是不支持c++呀,好象在.NET环境下和在vc6环境下的ADO C++开发都一样啊,ADO.NET不会是针对C#开发的吧
...全文
210 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
北京的雾霾天 2004-11-29
  • 打赏
  • 举报
回复
呵呵,大家都很积极嘛,但是不要为了小事就说的很历害哟,算了吧,大家不都是在学么.
boy_sunshine 2004-11-29
  • 打赏
  • 举报
回复
我来晚了,一下子多了这么多,原来是两位仁兄激烈讨论的结果,呵呵,结帖,以后再说
somedummy 2004-11-28
  • 打赏
  • 举报
回复
哼哼,有素质的程序员绝对不会因为顺手写代码就写出一堆错误来,而你的程序一堆错误,这说明什么?

三番五次逃避我的问题这又说明什么?谁在卖弄自己的无知,大家心里面自有公断。
somedummy 2004-11-27
  • 打赏
  • 举报
回复
你为什么不好好说说你自己为什么连个struct都用成那样?你在逃避吗?

睁大你的牛眼,我什么时候说过C语言里面没有->操作符了?
somedummy 2004-11-27
  • 打赏
  • 举报
回复
回复人: webserv2(GIS)(CAU) ( ) 信誉:100 2004-11-27 04:09:00 得分: 0


->符号 的确是在C++中才有的,C中没有见过,应该是说没有!

->是指针变量 访问类的结构成员是使用的:

a->b 相当于(*a).b a 为指针变量!


==============================================================
这个是在误人子弟啊!C语言里面当然有->这个操作符了,而且基本上和C++里面用法一样
webserv2 2004-11-27
  • 打赏
  • 举报
回复
a->b 相当于(*a).b a 为指针变量!
webserv2 2004-11-27
  • 打赏
  • 举报
回复
->符号 的确是在C++中才有的,C中没有见过,应该是说没有!

->是指针变量 访问类的结构成员是使用的:

a->b 相当于(*a).b a 为指针变量!
somedummy 2004-11-27
  • 打赏
  • 举报
回复
C里面放置方法需要通过void*指针或者union来实现,这样的东西都需要程序员自己来控制,根本算不上真正意义上的OO,从这点可以看出来你也只能扳着指头算内存了(另外,我不认为你有能力以PC为平台开发PC底层的东西)。

还有,从你的代码可以看出你的水平之浅薄,连个struct都不会定义还敢在这里叫嚣
struct AAA
{
int abc;
}////这里少了分号,要能编译通过才叫奇怪

typedef AAA AAA_t;//这里也根本就是错误的,应该是typedef struct AAA AAA_t;

AAA_t c;
c.abc = 1;

AAA_t * d = &c;
d->abc = 1;//你根本就不看楼主的问题,难道你能在C里面使用c->abc?

你回去把C语言好好看看吧你!就你这样的水平,连strcut这种C语言里面基本到不能再基本的东西都用得如此可怜,哼哼……
北京的雾霾天 2004-11-26
  • 打赏
  • 举报
回复
ADO.NET是要由.NET的框架来支持的,发果要写非托管的程序这个是不行了.
boy_sunshine 2004-11-26
  • 打赏
  • 举报
回复
昨天又问了别人,原来果真是在函数里重载了运算符“->”,后来发现这个还是有用的,比如说对类里面私有成员内嵌类成员的访问
maozijun 2004-11-26
  • 打赏
  • 举报
回复
.是用在值类型的
->是用在引用类型的
e5022 2004-11-26
  • 打赏
  • 举报
回复
呵呵,不太懂,只是记得Delphi里面这两个操作符是通用的,也就是指针也可以用.来调用成员当然,前面加个*编译器也不介意。
somedummy 2004-11-26
  • 打赏
  • 举报
回复
回复人: ericvan(骨灰虫) ( ) 信誉:100 2004-11-25 22:41:00 得分: 0


这是C语言的基础


和C语言有什么关系啊?奇怪了,难道C语言里面还能在struct里面放置方法吗?而且C语言里面除非是MACRO,否则根本不可能出现这样的东西。


boy_sunshine,你去看看C++标准库里面的auto_ptr模板就知道了
crashloopbackoff 2004-11-25
  • 打赏
  • 举报
回复
这是C语言的基础
boy_sunshine 2004-11-25
  • 打赏
  • 举报
回复
也只能用重载运算符来解释了,但这样一来重载"->"似乎又显得有些牵强了,完全不用绕这么个弯子来调呀,直接来不更方便么?
somedummy 2004-11-25
  • 打赏
  • 举报
回复
这个很简单啊,myConnection是一个类对象,但是这个类对象的功能是智能指针,这样就可以完美的解释这种现象了。

其中_ConnectionPtr里面重载了operator->,所以myConnection->Open其实是调用了_ConnectionPtr::operator->(),然后由这个operator->()返回一个真正的指针,然后调用这个指针的Open成员函数
boy_sunshine 2004-11-25
  • 打赏
  • 举报
回复
hbxtlhx:在.NET环境里用vc++来写ADO到底是用的原来的ADO还是ADO.NET,还是说都可以?ADO.NET好象把原来ADO里的RecordSet分解成了DataReader和DataAdapter以及其它一些东东,功能更细致化,分工更明确化了。
somedummy:就用_ConnectionPtr,_CommandPtr,_RecordSetPtr中的任一个指针,如下:

_ConnectionPtr myConnection;
myConnection.CreatInstance();
myConnection->Open();
我说的是前面的一样,这样的你见过么?怎么解释呀
somedummy 2004-11-25
  • 打赏
  • 举报
回复
->和.是两个不同的操作符,如果出现在不同的位置,当然是可以的

譬如这样
(ptra->classb).objc
或者(classa.ptrb)->objc
北京的雾霾天 2004-11-25
  • 打赏
  • 举报
回复
ADO.NET只能对.NET来用,也就是说只能用到托程序里,VC6.0只能写非托管程序,所以不能正常的调用ADO.NET,只能用ADO来写.

对于同时有->和.的东东我没有处理过,不敢说了.

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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