问题标签 [member-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
322 浏览

class - 编写成员函数时有什么更好的做法?

我已经看到成员函数在它们所属的类内部和类外部都使用类内部的函数原型进行了编程。我只使用过第一种方法进行编程,但想知道使用另一种方法或只是个人喜好是否更好?

0 投票
1 回答
323 浏览

c++ - mem_fun 失败,pthread 和类 ptr

pthread接受作为它的参数void *(*start_routine)(void* userPtr),我希望我可以用它std::mem_fun来解决我的问题,但我不能。

我想使用该功能void * threadFunc()并将其userPtr作为类(userPtr->threadFunc())。有没有类似于std::mem_func我可以使用的功能?

0 投票
5 回答
577 浏览

c++ - 与 C++ 中循环中的更改值进行比较是一种好的形式吗?

毫无疑问,你们中的一些人已经看过我最近的帖子,都是关于同一个程序的。我一直遇到问题。重申一下:还在学习,不是很高级,不太了解指针,没有上课,根本不懂OOP概念等。这段代码只是将两个排序的向量fray和sarray合并为一个排序的向量向量。至少,我希望它是这样做的。告诉我:

我重写了我的合并排序函数的合并部分,以便......好吧,让它工作。我实际上对这段代码有几个问题:

  1. 如果 for 循环在下一次传递时可能会改变它们,那么将我的最后两个 if 语句与 std::vector::iterators it && iter 进行比较是一种好的形式吗?
  2. iter 的值是否会在此循环的最后一次通过时发生变化并搞砸我的代码?将我的最后一个 if 语句放在 *it 和 *iter 比较之前吗?
  3. end() 成员函数是否引用了调用它的最后一个值?似乎它可能会以某种方式延伸过去。

编辑:我明天会回复所有回复,所以如果你想听更多,请回来查看。已经过了午夜。晚安。

0 投票
2 回答
3022 浏览

javascript - 在该对象的函数内迭代该对象的所有成员

如果我能做到这一点,那将非常方便:

然而,这似乎并没有做我想要的。我意识到循环最终将不得不遍历它的父函数(这也毫不奇怪,不会发生)。

这是不可能的,因为第二个函数中的“this”指的是第二个函数而不是第一个函数吗?还是关键字“this”只是公共成员的声明运算符而不是对外部对象的引用?

我认为以这种方式获得我想要的东西是不可能的,但有没有另一种方法可以实现这种行为?

0 投票
4 回答
11557 浏览

c++ - 为什么某些运算符只能作为成员函数重载,而其他运算符只能作为友元函数重载,而其余的都可以重载?

为什么某些运算符只能作为成员函数重载,而其他运算符只能作为非成员“自由”函数重载,而其余的则两者都重载?

这些背后的理由是什么?

如何记住哪些运算符可以重载为什么(成员、自由或两者)?

0 投票
3 回答
2113 浏览

design-by-contract - 如果按合同进行设计,除了成员函数中的不变量之外,还需要前置条件和后置条件吗?

我知道在 DbC 方法中,前置条件和后置条件附加到一个函数。

我想知道这是否也适用于成员函数。

例如,假设我在每个公共函数的开头使用不变量,成员函数将如下所示:

编辑:(清理我的例子)

是否可以仅对全局/泛型函数使用前置条件和后置条件,而只在类中使用不变量?

这似乎有点矫枉过正,但也许我的例子很糟糕。

编辑:

后置条件不只是检查不变量的子集吗?

在上面,我遵循http://www.digitalmars.com/ctg/contract.html的说明,其中指出:“当类构造函数完成时,在类析构函数的开始,在公共之前检查不变量成员运行,并且在公共函数完成后。”

谢谢。

0 投票
0 回答
3960 浏览

c++ - 判断一个类是否有函数

使用技巧(由Olivier Langlois描述),我可以确定一个类是否定义了类型:

我还可以确定一个类是否有变量:

但是,decltype(c::func)nur decltype(c::func())(取决于参数)都不适用于成员函数。有没有办法做到这一点,还是我必须在每个类中创建一个仿函数并用 检测它typename C::functor

编辑:你们都是对的,但是因为我还必须测试我将使用的类型decltype(&C::func)(这显然应该是一个指针)。

0 投票
1 回答
934 浏览

c++ - C ++:指向非相关结构内的类成员函数的指针

我已经在网上阅读了一些关于如何解决这个问题的文章,我认为我做得对......我的目标是拥有一个结构对象数组,其中包含指向类的成员函数的指针。

这是我到目前为止所拥有的...

然后,当使用 (stuff[0].*handler)() 调用函数时,带或不带参数(我确实打算使用参数列表),我得到“处理程序”:未声明的标识符...

我必须错过一些东西,只是不知道是什么。

0 投票
6 回答
488 浏览

c++ - 涉及临时的运算符重载解决顺序

考虑以下最小示例:

在 g++ 和 Visual C++ 上的输出是

写入临时对象的版本myostream(cout)似乎更喜欢成员运算符ostream::operator<<(void *),而不是自由运算符operator<<(ostream &, char *)。对象是否有名称似乎有所不同。

为什么会这样?以及如何防止这种行为?

编辑:现在从各种答案中可以清楚地看出为什么会发生这种情况。至于如何防止这种情况,以下似乎很有吸引力:

然而,这会导致各种歧义。

0 投票
3 回答
165 浏览

php - PHP中成员函数的默认继承类型是什么?

count公共、保护或私有的类型是什么?