当前位置:  开发笔记 > 编程语言 > 正文

非成员非朋友函数语法

如何解决《非成员非朋友函数语法》经验,为你挑选了0个好方法。

他们是否可以使用与成员函数相同的"点"表示法在对象上使用非成员非友元函数?

我可以从一个类中拉出(任何)成员,并让用户以他们一直使用的方式使用它吗?

更长的解释:

Scott Meyers,Herb Sutter等人认为,非成员非朋友函数是对象接口的一部分,可以改进封装.我同意他们.

但是,在最近阅读本文之后:http://www.gotw.ca/gotw/084.htm我发现自己质疑语法含义.

在这篇文章中,香草提出了具有单insert,erasereplace成员,以及多个同名的非成员非友元函数.

这是否意味着,正如我认为的那样,Herb认为某些函数应该与点符号一起使用,其他函数应该作为全局函数使用?

std::string s("foobar");

s.insert( ... ); /* One like this */
insert( s , ...); /* Others like this */

编辑:

感谢大家提供的非常有用的答案,但是,我认为我的问题的观点被忽略了.

我特别没有提到运营商的具体情况,以及他们如何保留"自然"符号.也不应该将所有内容都包装在命名空间中.这些东西写在我链接的文章中.

问题本身是:

在文章中,Herb建议一个insert()方法是成员,而其余的是非成员非朋友函数.

这意味着要使用一种形式的insert(),你必须使用点符号,而对于其他形式,则不需要.

这只是我,还是听起来很疯狂?

我有一种预感,也许你可以使用单一语法.(我在想如何Boost :: function可以为mem_fun取一个*this参数).

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有