成员函数指针调用(C++如何在一个类的成员函数中调用另一个类的成员函数)

:暂无数据 2026-10-13 15:10:10 :0

成员函数指针调用(C++如何在一个类的成员函数中调用另一个类的成员函数)

各位老铁们,大家好,今天由我来为大家分享成员函数指针调用,以及C++如何在一个类的成员函数中调用另一个类的成员函数的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

C++如何在一个类的成员函数中调用另一个类的成员函数

1、首先声明如下所示的类,类内部定义一个public的整型数据成员。

2、主函数中定义指向类的数据成员的指针。

3、声明类的对象,该对象变量调用指向类的数据成员的指针进行赋值操作。

4、然后输出打印类的数据成员,从结果看,上一步的操作赋值成功。

5、定义类的指针,通过指针指向对象成员的指针来进行赋值。

6、从结果看,上一步的操作成功输出打印类的数据成员。

7、接下来将数字赋值给对象变量指向类的数据成员的指针,通过指针指向对象成员的指针来进行打印输出。

8、从输出的结果看,指向类的数据成员的指针可以通过本地对象和对象指针来进行操作。

对象或指针怎么调用成员函数

首先,类对象和对象指针其实就是对应的一段内存的首地址。
调用的成员函数的时候,比如成员函数为:void student::fun(int a);,这个fun有一个参数,但实际fun还有一个隐式参数,这个参数其实传递到函数进去的就是该类的对象或指针,它是该类保存数据的内存首址,当fun中改变成员变量的值时,就是改变这个传递过来的地址指针所指向的那块内存的数据,由此不同的对象所指向的内存不同,所以对象与对象之间互不打扰。

成员函数指针的解引用怎么理解

p是指向Base类(及其子类)的对象的指针。pf是指向类Base的成员函数的指针,就是说pf是指向函数的指针,但只能用它指向Base的成员函数,当然这个成员函数还得满足pf定义的签名,即不需要参数且返回类型是void。
那么p-》的意思就是引用p指向的对象的某个成员(可以是数据成员,也可以是函数成员)。比如p-》print();,可以理解为调用p指向的对象的方法print。但这里需要注意的一点是:print是虚函数且p可以指向子类,因此,实际调用的可能是print方法的子类版本。
因pf是指向Base类的成员函数的指针,所以,*pf就是pf指向的成员函数。
而(p-》*pf)();就是调用p指向的对象的由pf指向的成员函数。简单讲就是,调用p指向的对象的一个成员函数,但这个成员函数究竟是哪个,由指针pf给出。

派生类指针指向基类对象,如何调用其成员函数

pb-》f(); //因为pb指向的实际对象是A类,所以编译器会把A当作B的子类看待,由于函数同名,于是 pb-》f()会查找A的虚函数表,而A没有虚函数表,于是出错 ,你可以把A的f()也定义成virtual 的,那就会调用A的f() ,或者把B的f()换个名字比如 f1(),那么pb-》f();就不会查找虚函数表,而执行了A::f()

新人请问,怎么获取类成员函数的指针

class Program{
public:
void to_swap(int*,int*);
};
void Program::to_swap(int *p, int*p2){
int temp = *p;
*p = *p2;
*p2 = temp;
}
int main(int argc, char* argv){
Program app;
void (Program::*pf)(int *, int*);// 第1步,声明指向公共成员函数的指针的声明
pf = &Program::to_swap;          // 第2步,使指针指向公共成员函数的地址
int first = 1, second = 2;
cout 《《 "first=" 《《 first 《《 "\tsecond=" 《《 second 《《 endl;
(app.*pf)(&first, &second);      // 第3步,调用指向公用成员函数的指针
cout 《《 "first=" 《《 first 《《 "\tsecond=" 《《 second 《《 endl;
return 0;
}

C++|详解类成员指针:数据成员指针和成员函数指针及应用场合

对于类对象对于成员的调用,需要有类对象的限定,一方面是一个类命名空间,另一方面用于传递隐含的this指针。

数据和函数,包括类对象的数据成员和成员函数,都是可以寻址的,自然也可以定义一个指针,使其指向类成员或成员函数,然后通过指针来访问类的成员。这包括指向属性成员的指针和指向成员函数的指针。

关于数据的指针变量存储了具有特定数据类型的一个内存空间的首地址,确定了其指向的目标对象的蓝图,核心是由数据类型确定了目标对象所需内存空间大小,数据类型的编码和解码方式。关于代码的指针变量是指指向函数的指针变量,同样是首地址,类型是由函数签名所确定的类型,以及代码的指令集编码及读取和译码方式。

2.1 指向类数据成员的指针

2.1.1 定义

为了区别于普通指针变量,多了一个类名作用域限定,也显示了与类及类成员的相关性。

2.1.2 赋值&初始化

指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。

2.1.3 解引用

由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定类的一个对象,然后,通过对象来引用指针所指向的成员。

示例代码:

2.2 指向类成员函数的指针

定义一个指向非静态成员函数的指针必须在三个方面与其指向的成员函数保持一致:参数列表要相同、返回类型要相同、所属的类型要相同。

2.2.1 定义

为了区别于全局函数指针,多了一个类名作用域限定,也显示了与类及类成员的相关性。

2.2.2 赋值&初始化

2.2.3 解引用

由于类不是运行时存在的对象。因此,在使用这类指针时,需要首先指定类的一个对象,然后,通过对象来引用指针所指向的成员。

示例代码:

指向非静态成员时,必须用类名作限定符,使用时则必须用类的实例作限定符。指向静态成员时,声明时则不需要使用类名作限定符。(当然静态成员做右值也需要类名限定)

用指向类员函数的指针,可以实现更加隐蔽的接口。

类函数指针与普通函数指针一样,也可以做函数参数,形成函数回调的效果,实现更加弹性和通用的代码。

***隐藏网址***

-End-

怎样在一个类的成员函数里调用这个类里public的函数指针成员

你的那个不对,下面是正确的。类中friend不是这么用的。friend + 友元类(类外)的类对象!或友元函数、变量。
#include "stdafx.h"
class classTest{
public:
void( *classTest::pClassFun)(); //类中函数指针,注意这里*号在左边括号
static void print(){
printf("called print");
};
};
int main(int argc, char* argv)
{
printf("Hello World!/n");
classTest ct;
ct.pClassFun=&ct.print //外部将类中函数指针赋值为类中函数地址 ,注意这里print是static即静态函数,否则不能赋值
(*ct.pClassFun)(); //外部调用函数
return 0;
}

如果你还想了解更多这方面的信息,记得收藏关注本站。

成员函数指针调用(C++如何在一个类的成员函数中调用另一个类的成员函数)

本文编辑:admin

更多文章:


unix和linux区别(Unix和Linux的区别是什么)

unix和linux区别(Unix和Linux的区别是什么)

本篇文章给大家谈谈unix和linux区别,以及Unix和Linux的区别是什么对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 17:40

中软java培训(中软国际武汉java培训班靠谱吗)

中软java培训(中软国际武汉java培训班靠谱吗)

“中软java培训”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看中软java培训(中软国际武汉java培训班靠谱吗)!

2026年10月14日 17:00

getrealpath参数(java怎么读取web工程里面的文件)

getrealpath参数(java怎么读取web工程里面的文件)

大家好,关于getrealpath参数很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java怎么读取web工程里面的文件的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2026年10月14日 14:40

makefile文件怎么用(怎么打开使用makefile文件不是语法的依赖关系!!)

makefile文件怎么用(怎么打开使用makefile文件不是语法的依赖关系!!)

大家好,如果您还对makefile文件怎么用不太了解,没有关系,今天就由本站为大家分享makefile文件怎么用的知识,包括怎么打开使用makefile文件不是语法的依赖关系!!的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始

2026年10月14日 13:00

js字符串转number(js字符串加数字是什么类型)

js字符串转number(js字符串加数字是什么类型)

各位老铁们,大家好,今天由我来为大家分享js字符串转number,以及js字符串加数字是什么类型的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月14日 12:00

jdkpath环境变量配置(Path环境变量的配置)

jdkpath环境变量配置(Path环境变量的配置)

大家好,如果您还对jdkpath环境变量配置不太了解,没有关系,今天就由本站为大家分享jdkpath环境变量配置的知识,包括Path环境变量的配置的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月14日 09:20

socket编程中(Socket 编程中 close() 和 shutdown() 有什么区别)

socket编程中(Socket 编程中 close() 和 shutdown() 有什么区别)

大家好,今天小编来为大家解答以下的问题,关于socket编程中,Socket 编程中 close() 和 shutdown() 有什么区别这个很多人还不知道,现在让我们一起来看看吧!

2026年10月14日 08:20

用jsp做一个登录网页(JSP作业,求大神写代码!编制一个简单的登录界面)

用jsp做一个登录网页(JSP作业,求大神写代码!编制一个简单的登录界面)

大家好,今天小编来为大家解答以下的问题,关于用jsp做一个登录网页,JSP作业,求大神写代码!编制一个简单的登录界面这个很多人还不知道,现在让我们一起来看看吧!

2026年10月14日 06:50

change directory(change directory是什么意思)

change directory(change directory是什么意思)

各位老铁们,大家好,今天由我来为大家分享change directory,以及change directory是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面

2026年10月14日 04:20

javascript基础教程第9版(js鼠标悬停显示文字实例)

javascript基础教程第9版(js鼠标悬停显示文字实例)

本篇文章给大家谈谈javascript基础教程第9版,以及js鼠标悬停显示文字实例对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 03:50

最近更新

白俄罗斯和中国(白俄罗斯免签吗)
2026-10-14 17:20:32 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:5
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表