菜鸟问题:(->) 和 (.) 有什么区别,是不是调用指针对方法就用 -> ,调用对象的方法就用 . ?

Rukee 2001-11-22 09:48:45
为什么会有这种区别?回答必给分!
...全文
190 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lfd_boy 2001-11-26
  • 打赏
  • 举报
回复
建议看看<<c++高级参考手册>>之类的书
Rukee 2001-11-26
  • 打赏
  • 举报
回复
谢谢大家帮忙!
给分了!
分嘛,各位老兄谁有需要,跟我说一声,我一定帮忙加!
我在做一个类似画笔工具的ActiveX组件,希望和大家交流!
golden_alvin 2001-11-25
  • 打赏
  • 举报
回复
->还有很重要的一点就是可以重载,做smart pointer
flashman 2001-11-25
  • 打赏
  • 举报
回复
“ ->” 用结构指针 (和“ .” 一样也是结构成员操作符)
{使用箭头操作符就是对结构成员进行操作。但必须清楚:当用点操作符时,它的左边应是一个结构变量,当用箭头操作符时,它的左边应是一个结构指针}
e.g.
struct person
{
char name[20];
unsigned long id;
//...
}

viod main()
{
person pr1;
person * prPtr;
prPtr = &pr1;
strcpy(prPtr->name,"David Marat");
prPtr->id = 987654321;
//...
}

其中:prPtr->id 等价于 pr1.id 等价于 (*prPtr).id

也就是说,可以用 "." 而不使用 "->"
:Rukee同学你明白了吗? 若是还有什么不清楚的 QQ联系
QQ号码是.......... //分是你给的,号码是我给的,呵呵,这个世界还是挺公平的嘛,是不?

Rukee 2001-11-23
  • 打赏
  • 举报
回复
唉,真没用啊。什么C++编程思想,深入浅出MFC,还看了微软的MCSE的书。
再回来问这种菜菜菜问题,无奈呀。书上说的就是这样子用的,跟着抄也没错。我只是不明白为什么C++里用一个东西,又是指针、又是实例、又是引用。该何去何从。
看样子要去看第二遍了。
似乎在用C++来折磨自己的,何苦呢,何必呢!
不发牢骚了,只能说自己似乎明白了一些。
还有很多菜鸟问题,也还有很多分!会和大家一起来分享的。
Rukee 2001-11-22
  • 打赏
  • 举报
回复
象zhang_wei_question(zhangwei)说的
(*pa).f();
怎么解释呢?
是不是(*pa)也表示一个实例?
如果是指针的话呢是不是应该这样
pa->f();
?
zhang_wei_question 2001-11-22
  • 打赏
  • 举报
回复
当然可以:
class A
{
public:
void f() { };
};
A *pa;
(*pa).f();//
我认为:调用指针就用 -> ,调用对象就用 . 就像匈牙利变量命名法一样,让自己明白。

zjlsct 2001-11-22
  • 打赏
  • 举报
回复
300分问这样的问题,有钱人!
gloss 2001-11-22
  • 打赏
  • 举报
回复
比如:
class AA{
public:
int a;
int b;
};

AA z,*p;
如果访问对象z中的a,则应:z.a;
如果访问指针对象*p中的a,则应:p->a;
对于结构类型也一样;

东门河蟹 2001-11-22
  • 打赏
  • 举报
回复
就是指针的问题,如果结构是指针的话,就只能用->
否则用.
dis_covery 2001-11-22
  • 打赏
  • 举报
回复
the difference in pointer and instance
kingfish 2001-11-22
  • 打赏
  • 举报
回复
struct Person{
char name[10];
int age;
}you;

struct Person *p;
p = &you;

p->age =24;
(*p).age=24; //指针都可以用

you.age =24; //struct只能用.
lj9852 2001-11-22
  • 打赏
  • 举报
回复

这随便哪本书上都有把,通常的用法是,->的左边是一个类指针,右边是类成员。.的左边是类实例,右边也是类成员,如:
class a
{
public:
void f() { };
};
a *pa;
a b;
pa->f();
a.f();
bdsc 2001-11-22
  • 打赏
  • 举报
回复
(->) 和 (.) 有什么区别,是不是调用指针对方法就用 -> ,调用对象的方法就用 . ?

看到这两个东西想到的应该是:对象。
他们的名字应该叫:成员析取(也有叫访问)符,用来访问对象的属性和方法。
->是间接析取(通过地址)
.是直接析取(通过名字)

->可以重载(重要的设计手段之一)。
.不能重载
NowCan 2001-11-22
  • 打赏
  • 举报
回复
(*pa).f();
怎么解释呢?
是不是(*pa)也表示一个实例?
当然了,*pa就是实例。是pa指针指向的实例。
lj9852 2001-11-22
  • 打赏
  • 举报
回复

A *pa;
这里(*pa).f()就等价于 pa->f();
比如int *p;自己想想 p 和 *p 的区别就应该可以明白了吧。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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