gpt4 book ai didi

c++ - 指向类成员的指针有什么用?

转载 作者:可可西里 更新时间:2023-11-01 18:26:57 29 4
gpt4 key购买 nike

我读过关于指向类成员的指针,但我从未见过它们在任何实际应用中使用。有人可以解释这些指针的用例是什么吗?真的有必要有这样的指点吗?

例如。

class abc
{
public:
int a;
abc(int val) { a = val; }
};

int main()
{
int abc::*data;
abc obj(5);

data = &abc::a;

cout << "Value of a is " << obj.*data << endl;

return 0;
}

在上面,例如。为什么以这种方式访问​​“a”的值?使用指向类成员的指针有什么好处?

最佳答案

成员指针或成员函数指针的最大优点是您可以

  • 不必立即绑定(bind)到特定实例
  • 不需要对成员名称做任何限制,只要类型匹配即可。

这可以用于例如回调或抽象算法:

std::map<int,int> m;
m.insert(std::make_pair(1,2));
m.insert(std::make_pair(3,4));
m.insert(std::make_pair(5,6));
std::ptrdiff_t s =
std::count_if(m.begin(), m.end(),
boost::bind(&std::map<int,int>::value_type::first, _1) > 2);
std::cout << s << std::endl; // 2

请注意,Boost.Bind、Boost.Function 及其 TR1 等价物已经为您很好地封装了它。在某种程度上,当前标准还包括像 std::mem_fun 这样的工具。在 <functional> .

关于c++ - 指向类成员的指针有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2778578/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com