比较成员函数指针

时间:2016-06-22 18:13:54

标签: c++ pointers member-function-pointers

我们假设我们有一个类// header file struct text { static const char* hello_world(); }; // one source file // #include "text.hpp" const char* text::hello_world() { static const char _[] = "Hello, World"; return _; } // use case // #include "text.hpp" #include <iostream> int main() { std::cout << text::hello_world() << std::endl; } ,它有一个方法A。我知道我可以使用void foo()获取指向foo()的指针,但是这个指针似乎只依赖于类类型,而不是实例化对象。如果我们有两个类型为&A::foo的{​​{1}}和a1对象,我们怎样才能在a2 A方法与foo()方法之间产生差异{1}}使用指针,成员函数指针,甚至指针地址?基本上,我希望能够获得一个引用a1对象内部a2方法的指针,该方法与引用void foo()方法a1方法的指针不同。 1}}。谢谢。

2 个答案:

答案 0 :(得分:0)

我认为你不能让它们与众不同。 a1-&gt; foo()和a2-&gt; foo()基本相同。

答案 1 :(得分:0)

我认为你在这里混淆了对象(或类的实例)的概念。对象就像一个类的蓝图。 您不能为每个对象设置不同的成员/成员函数

例如。

class A
{
  int result;

  public: 
  void add(int x, int y)
  {
    this->result = x + y;
  }
}

A类的所有对象都将包含成员变量result和成员函数add()。因此,obj1->add()obj2->add()会调用相同的add()函数,即使这些对象本身具有不同的属性。

obj1->add(1,2)会导致obj1->result 3 ,而

obj2->add(1,3)会导致obj2->result 4