C++ 不是很明显的指针

C++ 不是很明显的指针,c++,pointers,C++,Pointers,我有一门课: class X{ public : void f ( int ) ; int a ; } ; 任务是“在代码中提供以下声明: 指向类X的int变量的指针 指向在类X中定义的函数void(int)的指针 指向类X的双变量的指针“ 那么指向int a的指针就是int*x=&a,对吗?如果X中没有double,我可以在这个类中创建指向double的指针吗?最大的问题是第二项任务。如何声明指向函数的指针 您需要将它们声明为指向成员的指针。指向成员的指针不同于通常的指针,因为它们

我有一门课:

class X{
 public :
 void f ( int ) ;
 int a ;
} ;
任务是“在代码中提供以下声明:

  • 指向类X的int变量的指针
  • 指向在类X中定义的函数void(int)的指针
  • 指向类X的双变量的指针“

那么指向int a的指针就是int*x=&a,对吗?如果X中没有double,我可以在这个类中创建指向double的指针吗?最大的问题是第二项任务。如何声明指向函数的指针

您需要将它们声明为指向成员的指针。指向成员的指针不同于通常的指针,因为它们是结构或类成员的地址,而不像常规指针那样是绝对地址

有关更多信息,请阅读。

这些被称为。它们不是常规指针,即不是地址,而是类实例中的“某种”偏移量(虚拟函数有点棘手),因此:

  • intx::*ptr_to_int_成员
    
  • void(X::*ptr_to_member_func)(int)
    
  • double X::*ptr_to_double_成员
    
    指向任何类型的指针在类型名和变量名后声明为“*”:

    Franks_Class * p_franks_class; // Declares a pointer to an instance of Franks_Class.
    
    更模糊的声明是针对函数的:

    typedef void (*My_Int_Function_Ptr)(int parameter);
    
    它声明了一个名为My_Int_Function_Ptr的类型(同义词),一个指向接受Int参数并返回
    void
    的函数的指针


    从这个和<强>好/强> C++书籍,你应该能够回答你的问题。

    你被问到指向成员的常规指针或指针吗?我想问题是要求指向成员的指针和指向成员函数的指针,尽管我可能是错的。查找这些,但首先查找函数指针。