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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 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
相关文章
|
21天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
30 2
|
27天前
|
存储 编译器 C++
【c++】类和对象(下)(取地址运算符重载、深究构造函数、类型转换、static修饰成员、友元、内部类、匿名对象)
本文介绍了C++中类和对象的高级特性,包括取地址运算符重载、构造函数的初始化列表、类型转换、static修饰成员、友元、内部类及匿名对象等内容。文章详细解释了每个概念的使用方法和注意事项,帮助读者深入了解C++面向对象编程的核心机制。
70 5
|
1月前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
72 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
82 4
|
26天前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
92 13
|
6月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
2月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
35 0
|
3月前
|
存储 人工智能 C语言
C语言程序设计核心详解 第八章 指针超详细讲解_指针变量_二维数组指针_指向字符串指针
本文详细讲解了C语言中的指针,包括指针变量的定义与引用、指向数组及字符串的指针变量等。首先介绍了指针变量的基本概念和定义格式,随后通过多个示例展示了如何使用指针变量来操作普通变量、数组和字符串。文章还深入探讨了指向函数的指针变量以及指针数组的概念,并解释了空指针的意义和使用场景。通过丰富的代码示例和图形化展示,帮助读者更好地理解和掌握C语言中的指针知识。
122 4
|
4月前
|
C语言
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
【C初阶——指针5】鹏哥C语言系列文章,基本语法知识全面讲解——指针(5)
|
4月前
|
C语言
【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)
【C初阶——指针4】鹏哥C语言系列文章,基本语法知识全面讲解——指针(4)