|
|
1
213
它是一个“指向成员的指针”-下面的代码说明了它的用法:
至于 为什么? 编辑: 我想不出一个令人信服的方法来使用指向成员数据的指针。指向成员函数的指针可以在可插拔的体系结构中使用,但再一次在一个小空间中生成一个示例让我感到失望。下面是我最好的(未经测试的)尝试-一个Apply函数,它可以做一些预处理&将用户选择的成员函数应用于对象之前的后处理:
括号
|
|
|
2
97
这里要注意的是传递给count_fruit的指针。这样就不用编写单独的count_apples和count_oranges函数。 |
|
3
66
|
|
|
4
47
下面是我正在研究的一个真实示例,来自信号处理/控制系统: 假设您有一些表示正在收集的数据的结构:
现在假设将它们填充到向量中:
注释编辑于2016/08/05,用于更简洁的模板功能方法
编辑-以上代码对性能有影响 您应该注意,正如我很快发现的,上面的代码有一些严重的性能影响。总结是,如果要计算时间序列的总结统计信息,或计算FFT等,则应将每个变量的值连续存储在内存中。否则,对序列进行迭代将导致检索到的每个值的缓存未命中。
在许多体系结构上,一个
这样做更好:
现在,当从内存加载第一个x值时,接下来的三个x值也将加载到缓存中(假设适当对齐),这意味着您不需要为接下来的三个迭代加载任何值。 通过在eg SSE2体系结构上使用SIMD指令,可以进一步改进上述算法。然而,这些都是有效的 如果这些值在内存中都是连续的,并且您可以使用一条指令将四个样本加载到一起(在以后的SSE版本中会有更多)。
|
|
|
5
39
您可以稍后在上访问此成员 任何
请注意,您确实需要一个实例来调用它,因此它不像委托那样工作。
通常,使用接口(即C++中的纯基类)是更好的设计选择。 |
|
|
6
26
IBM 有更多关于如何使用这个的文档。简单地说,您使用指针作为类的偏移量。除了它们引用的类之外,不能使用这些指针,因此:
|
|
|
7
20
它使得以统一的方式绑定成员变量和函数成为可能。以下是您的汽车类的示例。更常见的用法是绑定
|
|
|
8
11
您可以使用指向(同构)成员数据的指针数组来启用双命名成员(即x.data)和数组下标(即x[idx])接口。
|
|
|
9
2
显然,只有当您觉得代码受到了足够的冲击,以至于if语句减慢了事情的完成时(例如,深入到某个密集算法的内部),这才是实际有用的。我仍然认为它比if语句更优雅,即使在没有实际用途的情况下,但这只是我的观点。 |
|
|
10
2
指向类的指针不可用 真实的 由于静态成员不与任何对象关联,因此指向成员的指针不能指向任何静态成员(数据或函数) 考虑以下事项:
资料来源:完整的参考C++ Herbert Schildt第四版 |
|
|
11
0
下面是一个指向数据成员的指针可能很有用的示例:
|
|
|
12
0
假设你有一个结构。该结构的内部是 *两个类型相同但含义不同的变量
好的,现在假设您从不同的源加载数据,但是数据以相同的方式呈现(例如,您需要相同的解析方法)。 你可以这样做:
在这一点上,呼叫
|
|
|
13
0
那个构造函数有什么好处
如果您已向foo提供了共享的\u ptr,则可以使用该构造函数检索其成员ival或fval的共享\u ptr:
如果希望传递指针foo_shared->ival到某个需要共享\u ptr的函数 https://en.cppreference.com/w/cpp/memory/shared_ptr/shared_ptr |
|
|
14
0
指向成员的指针是C++的类型安全等价物
这比:
至于为什么要使用
|
|
|
15
0
使用指向成员的指针,我们可以编写这样的通用代码
|
|
|
16
0
我爱这个世界
|
|
|
17
-1
我认为只有当成员数据相当大(例如,另一个相当大的类的对象)并且您有一些只对该类的对象进行引用的外部例程时,您才会希望这样做。您不想复制成员对象,因此这允许您传递它。 |
|
|
18
-1
只是为@anon's&添加一些用例@Oktalist的回答是,这里有一个关于成员函数指针和成员数据指针的阅读材料。 |