首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++保存指向类变量的成员函数指针

C++保存指向类变量的成员函数指针是一种特殊的指针类型,它可以用来保存指向类的成员函数的地址。通过保存成员函数指针,我们可以在需要的时候调用该成员函数,而无需创建类的实例。

在C++中,成员函数指针的类型与成员函数的类型相关联。成员函数指针的类型由以下几个部分组成:返回类型、类名、函数参数列表。例如,对于一个返回类型为void、类名为MyClass、参数列表为int的成员函数指针,其类型为void (MyClass::*)(int)。

成员函数指针的定义和使用如下所示:

代码语言:txt
复制
class MyClass {
public:
    void func(int x) {
        // 成员函数的实现
    }
};

int main() {
    // 定义成员函数指针
    void (MyClass::*ptr)(int) = &MyClass::func;

    // 创建类的实例
    MyClass obj;

    // 通过成员函数指针调用成员函数
    (obj.*ptr)(10);

    return 0;
}

在上述示例中,我们定义了一个指向MyClass类的成员函数func的指针ptr。然后,我们创建了一个MyClass的实例obj,并通过成员函数指针ptr调用了成员函数func。

C++保存指向类变量的成员函数指针可以在很多场景中发挥作用,例如:

  1. 回调函数:可以将成员函数指针作为回调函数,用于在特定事件发生时调用相应的成员函数。
  2. 状态机:可以使用成员函数指针来表示状态机的不同状态,并在状态转换时调用相应的成员函数。
  3. 插件系统:可以使用成员函数指针来实现插件系统,通过保存不同插件的成员函数指针,实现动态调用不同插件的功能。

腾讯云提供了丰富的云计算产品和服务,以下是一些与C++开发相关的产品和服务:

  1. 云服务器(CVM):提供了可弹性调整配置的云服务器实例,可用于搭建C++开发环境。详情请参考:云服务器产品介绍
  2. 云数据库MySQL版(CDB):提供了稳定可靠的MySQL数据库服务,可用于存储和管理C++应用程序的数据。详情请参考:云数据库MySQL版产品介绍
  3. 云函数(SCF):提供了无服务器的函数计算服务,可用于运行C++编写的函数。详情请参考:云函数产品介绍
  4. 对象存储(COS):提供了安全可靠的对象存储服务,可用于存储和管理C++应用程序的文件和数据。详情请参考:对象存储产品介绍

以上是一些腾讯云的产品和服务,可用于支持C++开发和云计算相关的应用场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

指向数据成员指针

C++中,可以定义一个指针,使其指向成员成员函数,然后通过指针 来访问成员。这包括指向属性成员指针指向成员函数指针。它类似与static成员函数成员变量,具有共享属性。...每一个实例化对象都可以借助指向数据成员指针来访问指向数据。...*pf)(); (ps3->*pf)(); getchar(); return 0; } 以上均是指向非静态成员成员指针,而指向静态成员指针则非常简单。...●指向静态成员函数指针 指向静态成员函数指针和普通指针相同,在定义时无须和相关联,在使用时也 无须和具体对象相关联。...}; void Student::display() { cout << data << endl; } int Student::data = 100; int main() { // 指向静态数据成员变量指针

16510
  • c++系列之二 指向成员函数指针(烧脑)

    ,原文详细解释了C++指向成员函数指针,因为带有“教程”一词,所以比较通俗易懂。...我们可以把它想像成保存成员函数布局中“相对”地址。让我们来展示一下二者不同。...我们可以将一个指向派生指针赋值给一个指向其基指针(即"is-a"关系),而所谓“逆变性规则”(翻译君:不知道是啥,原文是contravariance rule)正是这种规则反面。...因为 “一个指向成员指针能在不同地址空间之间传递,只要二者使用对象布局一样” (此话来自C++老爸 Bjarne Stroustrup C++程序设计语言》 )。...成员函数指针和常规指针对比 不同情形下成员函数指针转换规则 如何使用成员函数指针数组来解决特定设计问题 编译器是如何解释成员函数调用 扩展:成员变量指针 http://luodw.cc/2015

    3K20

    C++ this指针:用于在成员函数指向调用该函数对象

    C++中this指针是一个指向当前对象指针。在成员函数中,可以使用this指针来访问调用该函数对象成员变量成员函数。...一、定义和使用this指针 this指针是在成员函数内部定义一个常量指针。它存储了当前对象地址,可以通过它访问当前对象成员变量成员函数。...二、作为返回值this指针 this指针可以作为返回值返回。这种情况下,返回指向调用该函数对象指针。为了实现这个功能,需要将返回类型设置为引用或指针类型。...,返回指向调用该函数对象指针。...在getName函数内部,使用了this指针访问调用该函数对象成员变量name。

    24740

    C++成员指针

    1.成员指针简介 成员指针C++引入一种新机制,它申明方式和使用方式都与一般指针有所不同。成员指针分为成员函数指针成员数据指针。 2....成员函数指针 在事件驱动和多线程应用中被广泛用于调用回调函数。在多线程应用中,每个线程都通过指向成员函数指针来调用该函数。在这样应用中,如果不用成员指针,编程是非常困难。...*memP)(); } 程序正常运行并输出: name:lvlv 使用成员函数指着注意两点: (1)使用成员函数指针时需要指明成员函数所属对象,因为通过指向成员函数指针调用该函数时,需要将对象地址用作...成员数据指针 一个对象生成后,它某个成员变量地址实际上由两个因素决定:对象首地址和该成员变量在对象之内偏移量。成员数据指针是用来保存某个成员数据在对象内偏移量。...它只能用于非静态成员变量

    1.4K10

    C++指向结构体变量指针

    C++通过指向结构体变量指针引用结构体变量成员 C++中,一个结构体变量指针就是该变量所占据内存段起始地址,指针变量也可以用来指向结构体数组中元素。 ...C++提供了指向结构体变量运算符->,例如: p->num;//表示指针p当前指向结构体变量成员num p->num 和(*  p).num 等价,同样,p->namep->name等价于(*p...p->n;//得到p指向结构体变量成员n值。 p->n++;//得到p指向结构体变量成员n值,用完该值后使它加1。...++p->n;//得到p指向结构体变量成员n值,并使之加1,然后再使用它。 经典案例:C++指向结构体变量指针。...C++指向结构体变量指针 更多案例可以go公众号:C语言入门到精通

    2.9K118

    C++ 成员指针

    文章目录 1.成员指针简介 2.成员函数指针 3.数据成员指针 1.成员指针简介 成员指针C++ 引入一种新机制,它申明方式和使用方式都与一般指针有所不同。...成员指针分为成员函数指针和数据成员指针。 2.成员函数指针 在事件驱动和多线程应用中被广泛用于调用回调函数。在多线程应用中,每个线程都通过指向成员函数指针来调用该函数。...*memP)(); } 程序正常运行并输出: name:lvlv 使用成员函数指着注意两点: (1)使用成员函数指针时需要指明成员函数所属对象,因为通过指向成员函数指针调用该函数时,需要将对象地址用作...3.数据成员指针 一个对象生成后,它某个成员变量地址实际上由两个因素决定:对象首地址和该成员变量在对象之内偏移量。数据成员指针是用来保存某个数据成员对象内偏移量。...它只能用于非静态成员变量

    79330

    C++成员函数 | 成员函数

    C++成员函数性质 在C++中,成员函数函数一种,它有返回值和函数类型,它与一般函数区别只是:  属于一个成员,出现在体中。...C++在使用函数时,要注意调用它权限以及它作用域,私有的成员函数只能被本类中其他成员函数所调用,而不能被外调用,成员函数可以访问本类中任何成员,可以引用在本作用域中有效数据。 ...C++外定义成员函数 上述所讲成员函数是在体中定义,在C++中也可以在体中只写成员函数声明,而在外面进行函数定义。...//作用域限定符 ∷ 在C++中,用作用域限定符声明函 数是属于哪个,如果在作用域运算符前面没有名,或者函数名前面既无名又无作用域限定符,则表示函数不属于任何,这个函数不是成员函数,而是全局函数...以上,如果你看了觉得对你有所帮助,就给小林点个赞叭,这样小林也有更新下去动力,跪谢各位父老乡亲啦~ C++成员函数 | 成员函数 更多案例可以go公众号:C语言入门到精通

    1.9K74

    C++this指针,静态成员,友元函数友元

    ---- 1. this指针 在上篇讲C++,对象,封装,继承(派生),多态时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。...在 C++ 中,每一个对象都能通过 this 指针来访问自己地址,this 指针是所有成员函数隐含参数,实际上成员函数默认第一个参数为T* const register this,this指针成员函数开始执行前构造...,它可以用来指向调用对象,并且只可以在成员函数中调用,对于全局函数,静态函数,友元函数,都不能使用this指针。...所以this指针不能在静态函数中使用,静态函数如同静态变量一样,他不属于具体哪一个对象,静态函数表示了整个范围意义上信息,而this指针却实实在在对应一个对象,所以this指针不能被静态函数使用...友元函数友元 所谓友元函数,就是在中,用friend关键字声明一个函数,这个函数声明在中,但不作为成员函数,虽然友元函数不属于成员函数,却可以访问成员,不论成员是public,pirvate

    1.5K10

    C++C++ this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

    一、常量成员函数 1、const 修饰成员函数分析 在 C++ 中 , 普通非静态成员函数 , 可以使用 const 进行修饰 , 在 下面的 Student 中 , 定义了 void fun(int...void fun(int age, int height) const const 修饰是 fun 函数 第一个参数 Student* pThis 指针指向内存空间 ; C++ 编译器会将 void...函数 第一个参数 Student* pThis 指针指向内存空间 和 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int age...; // 身高 如果 成员函数 被 const 关键字 声明为 常量成员函数 , 则在该函数中 不能修改 对象中 任何成员变量 ; class Student { public: void fun...fun 函数 第一个参数 Student* pThis 指针指向内存空间 和 指针本身 // // C++ 编译器会将该函数转为 Student_fun(Student* pThis, int

    22020

    c++之类成员变量成员函数是分开存储

    C++程序内存格局通常分为四个区: 全局数据区(data area),代码区(code area),栈区(stack area),堆区(heap area)(即自由存储区)。...全局数据区存放全局变量,静态数据和常量; 所有成员函数和非成员函数代码存放在代码区; 为运行函数而分配局部变量函数参数、返回数据、返回地址等存放在栈区;余下空间都被称为堆区。...根据这个解释,我们可以得知在定义时,成员函数是被放在代码区,而静态成员变量定义时就已经在全局数据区分配了内存,因而它是属于。...对于非静态成员变量,我们是在实例化过程中(构造对象)才在栈区或者堆区为其分配内存,是为每个对象生成一个拷贝,所以它是属于对象

    1.9K40

    指向函数指针

    指向函数指针 程序中定义函数后,对程序进行编译时,编译系统为函数分配一段存储空间存储二进制代码,这段内存空间起始地址(也称入口地址)称为函数指针。...程序中可以定义一个指针变量,用来存放一个函数起始地址,即该指针变量指向一个函数,称为函数指针变量。...函数指针变量定义一般形式如下: 类型说明符(*指针变量名)(函数形参列表); 说明: (1)函数指针变量可以指向函数满足两个条件:函数返回值由上面“类型说明符”确定;函数形参列表与上面...int(*pl)(int a, int b); double(* p2)( double x); 其中,函数指针变量pl可以指向返回值类型为int,形参是两个int类型变量函数;函数指针变量...例如 int c=(*p1)(100,10); 上面语句调用指针p1指向函数,实参为100和10,返回值赋值给变量c。

    80310

    指向函数指针

    当调用一个函数时出了通过函数名来调用之外,还可以通过指向函数指针变量来调用。切记,和一切指针变量一样,一个指向函数指针其初值也不能为空。因为它在使用之前必须被赋予一个真实地址。...double result = 0.0; 22 result = func1(0.0,1.0); 23 printf("%g\n",result); 24 } 现在改写上面的代码,使用一个指向函数指针变量来调用函数...(2)、(*p)两侧括号不能省,p先与*结合,表面是一个指针变量,在后面的()内容结合,表示此指针变量指向函数而非变量,如果去掉,如:double *p()表示p()返回类型是一个指向double型变量指针...但对于指向函数指针变量,它只能指向函数入口处而无法指向函数中某条具体指令,因此,对于p+n,p++等指针运算对于指向函数指针没有意义。...如:double (*p)(double , double); 所以,通过以上了解,我们知道了指向函数指针灵活性,一个指针变量可以调用多个不同函数,这对于程序优化和简化都起了很大作用。

    1.3K60

    C++:33---成员指针

    成员指针概述: 当初始化一个这样指针时,我们令其指向某个成员,但是不指定该成员所属对象 直到使用成员指针时,才提供成员所属对象 成员指针是指可以指向非静态成员指针 一般情况下,指针指向一个对象...,但是成员指针指向成员,而不是所创建出对象 静态成员不属于任何对象,因此无需特殊指向静态成员指针指向静态成员指针与普通指针没有任何区别 成员指针类型囊括了类型以及成员类型...数据成员指针定义 特点: 需要使用*来表示当前变量是一个指针 成员指针定义时必须包含所属 指针定义 下面定义一个指向Screen对象指针指针类型为string,并且指针为常量指针(因此不能通过这个指针修改值...*或者->*运算符作用域指向成员函数指针,来调用成员函数 例如: //pmf为成员函数指针指向于get_cursor()函数auto pmf = &Screen::get_cursor;//pmf2...*调用emptystd::find_if(svec.begin(), svec.end(), fcn); 当一个function对象包含有一个指向成员函数指针时,function知道它必须使用正确指向成员指针运算符来执行函数调用

    89030

    C++指向结构体变量指针构成链表

    C++结构体变量指向结构体变量指针构成链表  链表有一个头指针变量,以head表示,它存放一个地址,该地址指向一个元素。...链表中每一个元素称为结点,每个结点都应包括两个部分:   用户需要用实际数据 下一个结点地址。 经典案例:C++使用结构体变量。...head    stu1.next=&stu2;//将结点stu2起始地址赋给stu1结点next成员    stu2.next=&stu3;//将结点stu3起始地址赋给stu2结点next成员...    stu3.next=NULL;//结点next成员不存放其他结点地址    point=head;//point指针指向stu1结点       do   {     cout<<point-...C++指向结构体变量指针构成链表 更多案例可以go公众号:C语言入门到精通

    1.3K88

    C++const成员变量成员函数

    中,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量成员函数。...初始化 const 成员变量只有一种方法,就是通过构造函数初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。...const成员函数(常成员函数) const 成员函数可以使用所有成员变量,但是不能修改它们值,这种措施主要还是为了保护数据而设置。const 成员函数也称为常成员函数。...我们通常将 get 函数设置为常成员函数。读取成员变量函数名字通常以get开头,后跟成员变量名字,所以通常将它们称为 get 函数。...函数头部结尾加上 const 表示常成员函数,这种函数只能读取成员变量值,而不能修改成员变量值,例如char * getname() const。

    26830

    7.4 指向函数指针

    一、什么是函数指针 解释:存储空间起始地址(又称入口地址)称为这个函数指针 二、用函数指针变量调用函数 (1)通过函数名调用 (2)通过指针变量访问它所指向函数 三、定义和使用指向函数指针变量...一般形式 类型名(*指针变量名)(函数参数表列) 注意: ①定义指向函数指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定类型函数 ②如果要用指针调用函数,必须先使指针变量指向函数...③在给函数入口地址赋值时,只需给出函数名而不必给出参数 ④用函数指针变量调用函数时,只需将(*p)代替函数名即可,在(*p)之后括号中根据需要写上实参 ⑤对指向函数指针变量不能进行算术运算 ⑥用函数名调用函数...,只能调用所指定一个函数,而通过指针变量调用函数比较灵活,可以根据不同情况先后调用不同函数 四、用指向函数指针函数参数 指向函数指针变量一个重要用途是把函数地址作为参数传递到其他函数

    8453329

    8.5 指向函数指针

    2、可以定义一个指向函数指针变量,用来存放某一函数起始地址,这就意味着此指针变量指向函数。...02 用函数指针变量调用函数 如果想调用一个函数,除了可以通过函数名调用以外,还可以通过指向函数指针变量来调用该函数。...03 怎么定义和使用指向函数指针变量 1、一般形式 类型名(*指针变量名)(函数参数表列);如“int(*p)(int,int);”,这里“类型名”是指函数返回值类型。...2、定义指向函数指针变量,并不意味着这个指针变量可以指向任何函数,它只能指向在定义时指定类型函数。 3、如果要用指针调用函数,必须先使指针变量指向函数。...04 用指向函数指针函数参数 1、指向函数指针变量一个重要用途是把函数地址作为参数传递到其他函数

    9333029
    领券