看书的疑问,,,,,,??????

zhdleo 2002-05-25 05:41:59
在《Essential C++》的P116页,
讲的是“静态成员函数”,他先具了个例子:
bool Triangular::is_elem( int value )
{
.......................
}
下面书中说到:
“然而,上述的is_elem()并不存取任何non-static data member。它的运行和任何对象都没有任何关联,
因而应该可以很方便地以一般non-member function的方式来调用。但是我们不能这样写:
if ( is_elem(8) ).....
因为这样一来就没有办法让编译器或程序阅读者知道我们调用的究竟是哪一个is_elem().”

上面这段话我不太理解,为什么不能知道是哪一个is_elem()?

存在什么样的歧义呢???
...全文
17 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhdleo 2002-05-28
  • 打赏
  • 举报
回复
这个谁再帮帮我!
zhdleo 2002-05-25
  • 打赏
  • 举报
回复
楼上,对不起,书上的is_elem先开始()好像并没有定义为
static function

只是在后面才写成了static function呀?

你看在他真正定义带有static的is_elem(it)的那个class Trianguar
的前面,他写道:
“注意,member functions 只有在不存取任何non-static members的条件下才能够被声明为static.”
这说明一开始的那个is_elem并不是static呀
efanl 2002-05-25
  • 打赏
  • 举报
回复
这几句话是说,要在is_elem(8)前加上类限定符,即是:
if(Triangular::is_elem(8))...
这样来调用。
因为如果另有一个类A里面也有is_elem(int value)的话,就有歧义了。

69,371

社区成员

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

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