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

C++函数指针和类

在C++中,函数指针和类是两个不同的概念。函数指针是指向函数的指针变量,而类是用户自定义的数据类型。

函数指针的定义和使用:

函数指针是一个指针变量,它指向一个函数。函数指针的定义方式如下:

代码语言:c++
复制
返回类型 (*函数指针名称)(参数类型);

例如,定义一个指向函数的指针变量,该函数接受两个整数参数并返回一个整数:

代码语言:c++
复制
int (*func_ptr)(int, int);

使用函数指针调用函数:

代码语言:c++
复制
int add(int a, int b) {
    return a + b;
}

int main() {
    int (*func_ptr)(int, int) = add;
    int result = func_ptr(3, 4);
    cout<< result<< endl;
    return 0;
}

类的定义和使用:

类是一种自定义的数据类型,它由数据成员和成员函数组成。类的定义方式如下:

代码语言:c++
复制
class 类名 {
public:
    // 公有成员函数和数据成员
private:
    // 私有成员函数和数据成员
protected:
    // 受保护的成员函数和数据成员
};

例如,定义一个表示点的类:

代码语言:c++
复制
class Point {
public:
    Point(int x, int y);
    int getX() const;
    int getY() const;
private:
    int x_;
    int y_;
};

使用类:

代码语言:c++
复制
Point::Point(int x, int y) : x_(x), y_(y) {}

int Point::getX() const {
    return x_;
}

int Point::getY() const {
    return y_;
}

int main() {
    Point p(3, 4);
    cout << "x: " << p.getX() << ", y: " << p.getY()<< endl;
    return 0;
}

总结:

函数指针和类是C++中两个不同的概念,函数指针是指向函数的指针变量,而类是用户自定义的数据类型。函数指针可以用于动态地调用函数,而类可以用于封装数据和成员函数,提高代码的可读性和可维护性。

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

相关·内容

c++对象(二)this指针

1.this指针 1.1this指针的引出 首先我们定义一个日期date: class Date { public: void Init(int year, int month, int day)...这里就与隐含的this指针有关了 this指针是面向对象编程语言中的一个特殊指针,它指向调用成员函数的那个对象。通过this指针,成员函数可以访问调用它的那个对象的成员变量成员函数。...,不需要用户传递 this指针的类型:类型* const,(Date* const this)即成员函数中,不能给this指针赋值,但是this指向的内容可以被改变 特点: 在形参实参的位置,我们不能显示写出来...栈用于存储局部变量函数调用的上下文 const char* p = "abcdefg"; 这里p是一个指针,指向一个字符串常量。...后续给大家带来析构函数构造函数有关内容!

7010

C++】This指针复制构造函数

this指针 在每个成员函数中,都包含一个特殊的指针。 这个指针的名字是固定的,就是this指针。 this指针是指向对象的指针,它的值是当前被调用的所在对象的地址!...this指针是指向本类对象的指针,它作为参数传递给成员函数 this指针是隐式使用的。由编译器自动实现,我们不必人为的在形参中添加this指针。...因为this表示这个对象的指针,所以*this就表示这个对象了 (*this).调用成员变量/函数this->调用成员变量/函数,是一样的效果!...注意给*this添加括号,因为.运算符的优先级比较高 复制构造函数 复制构造函数普通构造函数有一些相似处的,也没有返回值,名作为函数名!...2.对象(传值)作为函数参数时。

80020

c++ 函数指针

函数指针基础: 1. 获取函数的地址 2. 声明一个函数指针 3.使用函数指针来调用函数 获取函数指针函数的地址就是函数名,要将函数作为参数进行传递,必须传递函数名。...声明函数指针 声明指针时,必须指定指针指向的数据类型,同样,声明指向函数指针时,必须指定指针指向的函数类型,这意味着声明应当指定函数的返回类型以及函数的参数列表。...例如: double cal(int); // prototype double (*pf)(int); // 指针pf指向的函数, 输入参数为int,返回值为double pf = cal;...// 指针赋值 如果将指针作为函数的参数传递: void estimate(int lines, double (*pf)(int)); // 函数指针作为参数传递 使用指针调用函数 double...,直接传入函数名 estimate(line_num, cal_m1); estimate(line_num, cal_m2); return 0; } 函数指针数组: 这部分非常有意思: #

43420

C++学习笔记 -- 函数指针指针函数

函数指针:指向函数指针,首先它是指针变量(同指向一个整形变量、字符、数组一样),其次它指向一个函数(地址)。...声明:函数类型 (* 指针变量名)(形参列表) 函数类型,指明函数的返回类型,由于()优先级高于*,所以指针变量名外的括号不能少,后面形参列表表示指针变量指向的函数所带的参数列表。...上面相当于用函数指针p,代替了max,为什么能这样? 事实上,每一个函数都有一个入口地址,这个地址相当于一个指针,而函数名表示的就是该函数的首地址(入口地址)。...:首先它是一个函数,其次它返回的类型是一个指针。...声明:类型标识符 *函数名(参数列表) 类型标识符,用于限定返回的类型(是指向型、字符型或者数组) 参考: 函数指针

76220

C++函数指针std::function对象

C++函数指针std::function对象 这篇博文中通过实现对String字符串大小写转换为列来说明C++函数指针std::function对象的使用。...我们在博文《C++实现一个简单的String》中的自定义的String为基础,再添加两个成员函数用于将字符串全部转为大写(toUpperCase)全部转为小写(toLowerCase)。...下面我们分别使用函数指针的方式C++ 11中的std::function对象进行实现。本文不对std::function的优点进行介绍,这是以一个简单示例进行入门介绍。...函数指针 头文件: 头文件实现中我们使用了typedef定义了一个函数指针类型,当然我们也可以使用using关键字进行定义,两者类似。...注意我们定义的transform函数指针的返回值是int,函数参数也是int,这是因为cctype头文件中的std::toupperstd::tolower函数的签名也是这样的。

2.4K30

C++成员指针

1.成员指针简介 成员指针C++引入的一种新机制,它的申明方式使用方式都与一般的指针有所不同。成员指针分为成员函数指针成员数据指针。 2....成员函数指针 在事件驱动多线程应用中被广泛用于调用回调函数。在多线程应用中,每个线程都通过指向成员函数指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。...成员函数指针的定义格式: 成员函数返回类型 (名::*指针名)(形参)= &名::成员函数名 成员指针使用示例: #include #include using...this指针的值,以便进行函数调用; (2)为成员函数指针赋值时,需要显示使用&运算符,不能直接将名::成员函数名赋给成员函数指针。...成员数据指针 一个对象生成后,它的某个成员变量的地址实际上由两个因素决定:对象的首地址该成员变量在对象之内的偏移量。成员数据指针是用来保存的某个成员数据在对象内的偏移量的。

1.3K10

C++】虚函数指针函数列表

本篇文章主要来讲述,C++多态的实现原理,也就是虚函数函数列表是怎么回事?它们是如何实现多态的?...C++实现虚函数的方法:为每个对象添加一个隐藏成员,隐藏成员保存了一个指针,这个指针叫虚表指针(vptr),它指向一个虚函数表(virtual function table, vtbl)(备注:一个对象一个虚指针...虚指针是跟对象绑定的,每一个对象会对应一个虚指针,这个原因应该是虚指针是作为的一个数据存储的导致的。例子参考 Base bb1两个对象的虚指针地址,明显是不相同的。 2....基的虚函数列表继承的虚函数列表是两个,是不相同的,继承的虚函数列表中存储的是继承的虚函数实现,如果继承没有实现基的虚函数的话,会存储基的虚函数地址。例子参见继承的执行结果。...C++多态的副作用 C++采用虚函数函数列表的方式来实现多态,确实给我们带来了很大的好处,让我们可以在不改变代码的时候,就能直接替换成运行的继承函数

1.3K31

C++ 成员指针

文章目录 1.成员指针简介 2.成员函数指针 3.数据成员指针 1.成员指针简介 成员指针C++ 引入的一种新机制,它的申明方式使用方式都与一般的指针有所不同。...成员指针分为成员函数指针和数据成员指针。 2.成员函数指针 在事件驱动多线程应用中被广泛用于调用回调函数。在多线程应用中,每个线程都通过指向成员函数指针来调用该函数。...成员函数指针的定义格式: 成员函数返回类型 (名::*指针名)(形参)= &名::成员函数名 成员指针使用示例: #include #include using...this指针的值,以便进行函数调用; (2)为成员函数指针赋值时,需要显示使用&运算符,不能直接将“名::成员函数名”赋给成员函数指针。...3.数据成员指针 一个对象生成后,它的某个成员变量的地址实际上由两个因素决定:对象的首地址该成员变量在对象之内的偏移量。数据成员指针是用来保存的某个数据成员在对象内的偏移量的。

75730

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

---- 1. this指针 在上篇讲C++,对象,封装,继承(派生),多态的时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。...在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址,this 指针是所有成员函数的隐含参数,实际上成员函数默认第一个参数为T* const register this,this指针在成员函数的开始执行前构造的...所以this指针不能在静态函数中使用,静态函数如同静态变量一样,他不属于具体的哪一个对象,静态函数表示了整个范围意义上的信息,而this指针却实实在在的对应一个对象,所以this指针不能被静态函数使用...静态数据成员普通数据成员一样遵从public,protected,private访问规则。 相对于的成员,必须在构造对象以后才会分配内存空间,只能通过对象名访问。...对于友元函数,放在publicprivate,或者是protected,都是可以的。

1.4K10

C++函数指针指针函数、返回值为函数指针函数浅谈

C++函数指针指针函数、返回值为函数指针函数浅谈 引言 函数指针指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。...而返回值为函数指针指针函数就更难理解了,放在文章的最后来介绍。 函数指针 函数指针是一种特殊的 指针,它指向函数的入口。...endl; return 0; } 指针函数 指针函数是一种返回值为指针函数。...A* b = createA(); //通过指针调用的方法 cout a = " getA() << endl; return...0; } 返回值为函数指针函数 其实在搞懂了函数指针指针函数后,这个概念并不难懂,其实这就是一个复杂一点的指针函数,因为他的返回值为函数指针

1.5K10

C++C++ 中的 this 指针用法 ① ( C++ 中的 this 指针引入 | this 指针用法 | 代码示例 )

一、C++ 中的 this 指针 1、C++ 中的 this 指针引入 在 C++ 中 , this 指针 是一个特殊的指针 , 由系统自动生成 , 不需要手动声明定义 , 在中的每个 非静态成员函数..., 因此 this 指针内部使用的指针 , 使用 this 可以访问 实例对象 中 的所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++ 中的...this 指针用法 C++ 中的 this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 中 , 直接使用 this 作为 本实例对象 的指针 ; this 使用 this-> 访问成员变量...中 , 定义了 成员变量 age height , 在 构造函数 中进行初始化 , 可以使用 this-> age 访问 age 成员变量 , 使用 this->height 访问 height...成员变量 ; 在下面的代码中 , 参数名称也是 age height , 与 成员变量名称重名了 , 使用 this 指针可以有效区分 函数参数 与 成员变量 重名的问题 ; 使用 代码 this

22920

函数指针指针函数用法区别

前言 函数指针指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数指针函数指针、数组指针指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难...接着看下面这个函数声明: int *fun(int x,int y); 这上面那个函数唯一的区别就是在函数名前面多了一个*号,而这个函数就是一个指针函数。...其返回值是一个 int 类型的指针,是一个地址。 这样描述应该很容易理解了,所谓的指针函数也没什么特别的,普通函数对比不过就是其返回了一个指针(即地址值)而已。...调用函数指针的方式也有两种: x = (*fun)(); x = fun(); 两种方式均可,其中第二种看上去普通的函数调用没啥区别,如果可以的话,建议使用第一种,因为可以清楚的指明这是通过指针的方式来调用函数...另外,本文都是针对普通函数指针进行介绍,如果是C++非静态成员函数指针,其用法会有一些区别,在另外一篇博客中单独介绍,文章在这里 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn

19520

指针函数函数指针区别

函数指针 1.1 定义 函数指针是指向函数指针。它存储了函数的地址,允许在运行时动态地选择要调用的函数函数指针允许在代码中间接地调用不同的函数。它是一个指针,可以指向函数,并用于调用该函数。...int (*add)(int, int); // 定义一个指向参数为两个整数、返回类型为整数的函数指针 void (*func)(void); // 定义一个指向无参数、无返回值的函数指针...ptr = add; // 初始化函数指针为 add 函数 int result1 = ptr(5, 3); // 调用 add 函数 printf("5...指针函数 2.1 定义 指针函数指的是一个函数,其返回类型是一个指针。这种函数返回一个指针值,而不是基本类型的值。指针函数本身是函数,其返回值是一个指针。...两者区别 函数指针是指向函数指针,允许在运行时选择调用的函数指针函数是一个函数,其返回类型是一个指针,它返回指针值而不是基本类型的值。

10010

C++函数指针详解

1 定义 每一个函数都占用一段内存单元,它们有一个起始地址,指向函数入口地址的指针称为函数指针。...2 语法 指向函数指针变量的一般定义形式为:数据类型 (*指针变量名)(参数表); 3 说明 函数指针的定义形式中的数据类型是指函数的返回值的类型。...这时,p就是指向函数max的指针变量,也就是pmax都指向函数的开头。...在一个程序中,指针变量p可以先后指向不同的函数,但一个函数不能赋给一个不一致的函数指针(即不能让一个函数指针指向与其类型不一致的函数)。...不能用*(p+1)来表示函数的下一条指令。 函数指针变量常用的用途之一是把指针作为参数传递到其他函数

27250

C++函数指针简介

定义使用函数指针,需要注意以下几点。 (1)定义函数指针的语法形式比较复杂,常借助于typedef类型定义符来简化函数指针的定义。...(2)函数名代表了函数的入口地址,在位函数指针赋值时,funcP=add;funcP=&add;都可以。...指向成员函数函数指针的用法 2.1函数指针指向静态成员函数 对于外部函数C++沿用了C语言中对函数指针的定义使用规范。...2.2函数指针指向非静态成员函数C++语言中,由于面向对象机制的引入,程序中不但有外部函数,还有对象的成员函数。对于的非静态成员函数而言,函数指针要以对象的”成员指针”的形式定义赋值。...(1)当函数指针指向成员对象时,对函数指针的定义必须加上名以及::(作用域运算符)标识该函数指针指向哪个的成员函数

35910

C++函数——内联函数&函数指针

C++函数 —— 内联函数&函数指针 今天我们继续讨论C++函数部分,剩下两个点,一个是内联函数,另一个是函数指针。...内联函数 我们先看一下内联函数。内联函数也是C++中的一个重要特性。...1、当性能优先时,应该使用内联函数 2、在宏上使用内嵌函数 3、优先在函数定义中使用外的inline关键字来隐藏实现细节 函数指针 所谓函数指针,其实本质上还是指针,但是不同于我们之前提到的指针函数指针是指向函数指针...以后我们会讲到,C++中常见的回调函数就是这样使用的。...对于函数指针与内联函数的说明这篇文章就到这里,由于是基础系列文章,先不详细展开,还有一些知识需要用实例练习加以说明。以后如果出高级系列再详细展开讨论。

2.4K21

指针函数函数指针「建议收藏」

概述 指针函数函数指针是C语言里两个比较绕的概念。但是不仅面试题爱考,实际应用中也比较广泛。...,其中,int * func_sum(int n)就是一个指针函数, 其功能十分简单,是根据传入的参数n,来计算从0到n的所有自然数的,其结果通过指针的形式返回给调用方。...不过在使用指针函数时,需要注意一点,相信细心地读者已经发现了,对比func_sumfunc_sum2函数,除了返回值不一样之外,还有一个不同的地方在于,在func_sum中,变量sum使用的是静态局部变量...函数指针指针函数不同,函数指针 的本质是一个指针,该指针的地址指向了一个函数,所以它是指向函数指针。...值得注意的是通过函数指针调用的方式。 首先代码里提供了3种函数指针定义的方式,这三种方式都是正确的,比较推荐第一种第三种定义方式。

47520

C语言(函数指针指针函数

函数指针指针函数 ③ 数组指针指针数组 还有个找抽的:⑤ 函数指针数组 经翻阅小学五年级语文课本得知,一个短语中的最后部分,是这个短语的中语,其余部分是定语(修饰语)。...也就是说,以上短语相当于: ① 指向函数指针 ② 返回指针函数 ③ 指向数组的指针 ④ 放了很多指针的数组 ⑤ 放了很多指向函数指针的数组 ? 语文课上完了,然鹅,没用!...p = &func // 让 p 指向函数 func ② 指针函数 func char * func(int, float); // 一个返回指针函数 ③ 数组指针 q int num[10]; /...char* 指针的数组 ⑤ 函数指针数组 fs void func(double, int); // 一个普通函数 void (*fs[3])(double, int); // 一个存放了 3 个指向以上函数指针的数组...通过以上的示例,你必然已经全然了然搞清楚了这5个词语的内在含义,再也不惧怕任何与此相关的面试笔试。

1.7K20
领券