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++书籍,你应该能够回答你的问题。
你被问到指向成员的常规指针或指针吗?我想问题是要求指向成员的指针和指向成员函数的指针,尽管我可能是错的。查找这些,但首先查找函数指针。