Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
";“释放您的功能”;方法:IDE可以提供提示吗? 我一直在听Klaus Iglberger关于CPPCON 2017的演讲,叫做“释放你的函数”(你可以在YouTube上找到它):它更好地揭示了一个概念,它来自于一个有效的C++书籍指南:“更喜欢非成员非朋友的函数,而不是成员函数”。_C++_Ide_Non Member Functions - Fatal编程技术网

";“释放您的功能”;方法:IDE可以提供提示吗? 我一直在听Klaus Iglberger关于CPPCON 2017的演讲,叫做“释放你的函数”(你可以在YouTube上找到它):它更好地揭示了一个概念,它来自于一个有效的C++书籍指南:“更喜欢非成员非朋友的函数,而不是成员函数”。

";“释放您的功能”;方法:IDE可以提供提示吗? 我一直在听Klaus Iglberger关于CPPCON 2017的演讲,叫做“释放你的函数”(你可以在YouTube上找到它):它更好地揭示了一个概念,它来自于一个有效的C++书籍指南:“更喜欢非成员非朋友的函数,而不是成员函数”。,c++,ide,non-member-functions,C++,Ide,Non Member Functions,看看所有的优点和缺点,有一个缺点让我非常困惑,那就是:你不使用操作符调用那些函数。,它们可以在任何地方自由定义 在阅读这篇关于接口原则的文章时,我非常清楚,这些自由函数是类接口的一部分,即使它们可以在项目中的任何位置的任何文件中定义 为什么这是一个劣势?因为根据我的经验,在大型项目中分散代码会导致代码重复,因为开发人员无法意识到已经为该类实现了一些实用功能,他们会再次编写代码。当您使用运算符调用对象上的函数时,这是不会发生的,这不仅是因为语言本身强制成员函数在声明类的同一文件中声明,但也很简单,

看看所有的优点和缺点,有一个缺点让我非常困惑,那就是:你不使用
操作符调用那些函数。
,它们可以在任何地方自由定义

在阅读这篇关于接口原则的文章时,我非常清楚,这些自由函数是类接口的一部分,即使它们可以在项目中的任何位置的任何文件中定义

为什么这是一个劣势?因为根据我的经验,在大型项目中分散代码会导致代码重复,因为开发人员无法意识到已经为该类实现了一些实用功能,他们会再次编写代码。当您使用
运算符调用对象上的函数时,这是不会发生的,这不仅是因为语言本身强制成员函数在声明类的同一文件中声明,但也很简单,因为IDE通常会在您按下“.”键时弹出一个已有成员函数的列表


所以问题是:假设接口原则是正确的,假设自由函数方法是一个好的编码准则,为了摆脱人们找不到已经编写好的类自由函数的缺点,IDE在技术上是否可以帮助开发人员显示整个类的公共接口,而不仅仅是类成员?或者它在实际应用中会是计算量巨大的,甚至无法实现的?

我认为您缺少了第二个标准,即什么是接口的一部分是
(b)“提供”了X
——因此它们不会“分散”在项目中。如果我写一个函数
void f(std::string s)
如果您的函数是
void f(const std::string&s)
它将是
std::string
@NeilButterworth的公共接口的一部分,那么您不会(我希望)将其视为
std::string
@NeilButterworth接口的一部分,因为将此指针作为隐式参数或将其显式写入函数签名中几乎并没有区别。我不确定您的具体情况,在这种情况下字符串实际上是被复制的,但我猜是这样的。类成员不一定与类“捆绑”在一起——所需要的只是类定义的可见性。不过,可能要回答您的问题:
a.m()
肯定地表示
m()
a
指定接口的一部分,并且作为
a
(或其类)的设计者工作-定义成员函数需要对类有一些“幕后”的理解,而且必须有人(嗯)在没有这种理解的情况下,更勇敢地尝试实现成员功能。使用语法
f(a)
,不太确定
f()
是interface@nyar你误解了这篇文章,那里没有指针-这是一个参考。@Peter问题不在于这篇文章在说明
f(a)
是类公共接口的一部分时是否正确。我假设这篇文章是正确的,因为它在许多方面强化了自由函数哲学。我重新编写这个问题是为了让它更具技术性:IDE是否可以按照接口原则定义的方式向开发人员建议整个类的公共接口?