构造和析构函数不允许调用纯虚函数,可以先调用虚函数,里面再调用纯虚函数实现。

class Base{
public:
    virtual void foo()=0;
    Base() { call_foo();}
    void call_foo() { foo(); }

};
 
class Derived: Base{
    void foo() {  }
};
 
int main() {
    Derived d;
}

在父类中定义纯虚函数,实现工厂生产。子类再实现。可以用虚函数里面调用纯虚函数实现。

父类实现了线程,子类实现方法即可示例:

//============================================================================
// Name        : mytestcpp.cpp
// Author      :
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================#include <iostream>using namespace std;#include <string>
#include <iostream>
#include "pthread.h"
using namespace std;class ITestComponent {
public:virtual void* thread_run(void* para)=0;virtual void* thread_run_tmp(void* para) {thread_run(para);};virtual void start() {typedef void* (*FUNC)(void*); //定义FUNC类型是一个指向函数的指针,该函数参数为void*,返回值为void*FUNC callback = (FUNC) &ITestComponent::thread_run_tmp; //强制转换func()的类型int rc;pthread_t thread_instance;pthread_attr_t attr; // Thread attributepthread_attr_init(&attr);pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);rc = pthread_create(&thread_instance, &attr, callback, this);if (rc) {cout << "thread_instance thread ERROR; return code is  " << rc << endl;}pthread_attr_destroy(&attr);}protected:
};class HardwareMeter: public ITestComponent {
public:void* thread_run(void *para) {while (1) {cout << "HardwareMeter " << " start." << endl;}}
};int main() {cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!HardwareMeter hm;hm.start();cin >> i;return 0;
}

转载于:https://www.cnblogs.com/bigben0123/p/3605263.html

c++纯虚函数在父类中调用的规避相关推荐

  1. C++子类实现父类纯虚函数实现父类获取子类信息

    C++子类实现父类纯虚函数实现父类获取子类信息 在C++中,我们可以通过继承和多态来实现代码的复用和扩展.其中,纯虚函数是实现多态的重要机制之一.在父类中声明一个纯虚函数,在子类中实现该纯虚函数,可以 ...

  2. c++从入门到精通——虚函数与纯虚函数

    文章目录 虚函数与纯虚函数 概念 普通计数器 多态计算器 其他 虚函数与纯虚函数 概念 首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调 ...

  3. c++多态--2(计算器,纯虚函数和抽象类)

    为什么要用多态 早期方法不利于扩展 开闭原则 开闭原则 对扩展开放 对修改关闭 利用多态实现-利于后期扩展,结构性非常好,可读性高,效率稍微低,发生多态内部结构复杂 多态成立的条件 又继承 子类重写父 ...

  4. 什么是纯虚函数?什么是抽象类?

    在设计时,常常希望基类仅仅作为其派生类的一个接口.这就是说,仅想对基类进行向上类型转换,使用它的接口,而不希望用户实际的创建一个基类的对象.同时创建一个纯虚函数允许接口中放置成员原函数,而不一定要提供 ...

  5. C++动态库调用宿主进程中的对象方法《纯虚函数的使用》

    可执行程序加载动态库并调用动态库导出的函数是比较容易的: 导入库对应的头文件 在CPP文件中调用函数 在链接程序时加上动态库作为参数 假设demo.cpp中需要用到动态库libadd.so中的某个函数 ...

  6. C++中的虚函数与纯虚函数

    文章目录 1 C++中的虚函数 1.1 虚函数 1.2 单个类的虚函数表 1.3 使用继承的虚函数表 1.4 多重继承的虚函数表 2 C++中的纯虚函数 1 C++中的虚函数 1.1 虚函数 虚函数的 ...

  7. c语言中虚函数和纯虚函数,C++ 虚函数和纯虚函数的区别

    首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...

  8. java中所有函数都是虚函数_关于Java:虚拟函数与纯虚函数之间的区别是什么?...

    本问题已经有最佳答案,请猛点这里访问. Possible Duplicate: C++ Virtual/Pure Virtual Explained 虚函数和纯虚函数有什么区别? CPP中的纯虚函数与 ...

  9. 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类

    目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...

最新文章

  1. R缺失值识别、过滤、填充(中位数、KNN、随机森林)
  2. 三维重建:SLAM的尺度和方法论问题
  3. java 中数组与list_Java中List与数组相互转换实例分析
  4. OpenGL小试牛刀第一季
  5. java虚拟机_Oracle独家:Java虚拟机学习指南
  6. docker登录mysql数据库_Docker下搭建mysql数据库
  7. linux常用命令速查手册PDF下载
  8. 电子围栏判断_脉冲电子围栏和张力围栏之间的区别
  9. c语言编程统计磁盘文件,C语言编程题经典40题(附解答).ppt
  10. nodejs 之创建文件
  11. 基于51单片机的简易数字示波器proteus仿真
  12. Goland常用快捷键
  13. win10不兼容 软件 ietest
  14. win10照片文件夹里面图片,突然不显示缩略图
  15. 南理工计算机科学与工程学院,周俊龙 - 南京理工大学 - 计算机科学与工程学院...
  16. 华为IoT首席架构师王启军:全栈工程师“养成记”
  17. 带你深入了解机器人视觉系统工作原理及其应用
  18. 连续系统与离散系统的时域分析
  19. ShowWindow 函数
  20. 技术干货 | 人大金仓KFS基于分区索引的分片入库技术解析

热门文章

  1. ajax实现关联词提示
  2. python接口自动化测试框架(post提交添加变量)
  3. JavaScript对象的创建
  4. 移动互联网的机会-从零创业,半年净赚50万?
  5. [BZOJ4557][JLOI2016]侦查守卫
  6. 安卓高手之路之ClassLoader(二)
  7. ArrayMap java.lang.ArrayIndexOutOfBoundsException
  8. react-native新导航组件react-navigation详解
  9. linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统
  10. abap 转换成字符串_SAP ABAP 处理字符串串串串串串串串(详细)