关于C++类方法函数指针的定义和使用方法

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: void (T_Database::*type_a)()=0; 注意一下类方法的函数指针的定义方法。  点击(此处)折叠或打开 头文件 #include ...

void  ( T_Database : : * type_a ) ( ) = 0 ;
注意一下类方法的函数指针的定义方法。 


点击(此处)折叠或打开

  1. 头文件
  2. #include<iostream>
  3. using namespace std;
  4. class T_Database
  5. {
  6.         public:
  7.                 virtual void __Check() =0;
  8.                 virtual void __Rred() =0;
  9.                 virtual void __All() =0;
  10. };


  11. class T_Oracle:public T_Database
  12. {
  13.         public:
  14.                 virtual void __Check(){
  15.                         cout<<"Check ORA db"<<endl;
  16.                 }
  17.                 virtual void __Rred(){
  18.                         cout<<"Read ORA db"<<endl;
  19.                 }
  20.                 virtual void __All(){
  21.                         cout<<"Read and Check ORA db"<<endl;
  22.                 }
  23. };
  24. class T_Mysql:public T_Database
  25. {
  26.         public:
  27.                 virtual void __Check(){
  28.                         cout<<"Check MYSQL db"<<endl;
  29.                 }
  30.                 virtual void __Rred(){
  31.                         cout<<"Read MYSQL db"<<endl;
  32.                 }
  33.                 virtual void __All(){
  34.                         cout<<"Read and Check MYSQL db"<<endl;
  35.                 }
  36. };

  37. 点击(此处)折叠或打开

    1. 主调函数
    2. #include<iostream>
    3. using namespace std;
    4. #include"Class.h"

    5. int main(void)
    6. {
    7.         T_Database* db_a;
    8.         void (T_Database::*type_a)()=0;
    9.         int dbcho,typecho;
    10.         bool uinput=false;

    11.         while(uinput==false)
    12.         {
    13.                 cout<<"Input your db type[0]quit[1]Oracle[2]Mysql"<<endl;
    14.                 cin>>dbcho;
    15.                 switch(dbcho)
    16.                 {
    17.                         case 0:
    18.                                 {
    19.                                         uinput = true;
    20.                                         return 1;
    21.                                 }
    22.                         case 1:
    23.                                 {
    24.                                         db_a = new T_Oracle;
    25.                                         break;
    26.                                 }
    27.                         case 2:
    28.                                 {
    29.                                         db_a = new T_Mysql;
    30.                                         break;
    31.                                 }
    32.                         default:
    33.                                 {
    34.                                         cout<<"Please input 0-2"<<endl;
    35.                                         break;
    36.                                 }
    37.                 }
    38.                 if(dbcho!=1&&dbcho!=2)
    39.                 {
    40.                         continue;
    41.                 }

    42.                 cout<<"Input what do[0]quit[1]Check[2]Rred[3]All"<<endl;
    43.                 cin>>typecho;
    44.                 switch(typecho)
    45.                 {
    46.                         case 0:
    47.                                 {
    48.                                         cout<<"please input int"<<endl;
    49.                                         uinput = true;
    50.                                         return 2;
    51.                                 }
    52.                         case 1:
    53.                                 {
    54.                                         type_a = &T_Database::__Check;break;
    55.                                 }
    56.                         case 2:
    57.                                 {
    58.                                         type_a = &T_Database::__Rred;break;
    59.                                 }
    60.                         case 3:
    61.                                 {
    62.                                         type_a=&T_Database::__All;break;
    63.                                 }
    64.                         default:
    65.                         {
    66.                                 cout<<"Please input 0-3,will exit"<<endl;
    67.                                 return 3;
    68.                         }
    69.                 }
    70.                 (db_a->*type_a)();
    71.         }
    72.         return 0;
    73. }
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
15 2
|
6天前
|
存储 安全 编译器
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(一)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
|
11天前
|
存储 C++ 索引
C++函数指针详解
【10月更文挑战第3天】本文介绍了C++中的函数指针概念、定义与应用。函数指针是一种指向函数的特殊指针,其类型取决于函数的返回值与参数类型。定义函数指针需指定返回类型和参数列表,如 `int (*funcPtr)(int, int);`。通过赋值函数名给指针,即可调用该函数,支持两种调用格式:`(*funcPtr)(参数)` 和 `funcPtr(参数)`。函数指针还可作为参数传递给其他函数,增强程序灵活性。此外,也可创建函数指针数组,存储多个函数指针。
|
14天前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
24 6
|
19天前
|
编译器 C++
【C++核心】指针和引用案例详解
这篇文章详细讲解了C++中指针和引用的概念、使用场景和操作技巧,包括指针的定义、指针与数组、指针与函数的关系,以及引用的基本使用、注意事项和作为函数参数和返回值的用法。
18 3
|
3天前
|
存储 C++
c++的指针完整教程
本文提供了一个全面的C++指针教程,包括指针的声明与初始化、访问指针指向的值、指针运算、指针与函数的关系、动态内存分配,以及不同类型指针(如一级指针、二级指针、整型指针、字符指针、数组指针、函数指针、成员指针、void指针)的介绍,还提到了不同位数机器上指针大小的差异。
8 0
|
6天前
|
存储 编译器 程序员
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值(二)
【C++】C++特性揭秘:引用与内联函数 | auto关键字与for循环 | 指针空值
|
1月前
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
33 0
|
2天前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
2天前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)