c++纯虚函数在父类中调用的规避
构造和析构函数不允许调用纯虚函数,可以先调用虚函数,里面再调用纯虚函数实现。
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++纯虚函数在父类中调用的规避相关推荐
- C++子类实现父类纯虚函数实现父类获取子类信息
C++子类实现父类纯虚函数实现父类获取子类信息 在C++中,我们可以通过继承和多态来实现代码的复用和扩展.其中,纯虚函数是实现多态的重要机制之一.在父类中声明一个纯虚函数,在子类中实现该纯虚函数,可以 ...
- c++从入门到精通——虚函数与纯虚函数
文章目录 虚函数与纯虚函数 概念 普通计数器 多态计算器 其他 虚函数与纯虚函数 概念 首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调 ...
- c++多态--2(计算器,纯虚函数和抽象类)
为什么要用多态 早期方法不利于扩展 开闭原则 开闭原则 对扩展开放 对修改关闭 利用多态实现-利于后期扩展,结构性非常好,可读性高,效率稍微低,发生多态内部结构复杂 多态成立的条件 又继承 子类重写父 ...
- 什么是纯虚函数?什么是抽象类?
在设计时,常常希望基类仅仅作为其派生类的一个接口.这就是说,仅想对基类进行向上类型转换,使用它的接口,而不希望用户实际的创建一个基类的对象.同时创建一个纯虚函数允许接口中放置成员原函数,而不一定要提供 ...
- C++动态库调用宿主进程中的对象方法《纯虚函数的使用》
可执行程序加载动态库并调用动态库导出的函数是比较容易的: 导入库对应的头文件 在CPP文件中调用函数 在链接程序时加上动态库作为参数 假设demo.cpp中需要用到动态库libadd.so中的某个函数 ...
- C++中的虚函数与纯虚函数
文章目录 1 C++中的虚函数 1.1 虚函数 1.2 单个类的虚函数表 1.3 使用继承的虚函数表 1.4 多重继承的虚函数表 2 C++中的纯虚函数 1 C++中的虚函数 1.1 虚函数 虚函数的 ...
- c语言中虚函数和纯虚函数,C++ 虚函数和纯虚函数的区别
首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数. 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数. 定义一个函数为纯虚函数,才代表函数没有被实现. 定义纯虚函数是为了实 ...
- java中所有函数都是虚函数_关于Java:虚拟函数与纯虚函数之间的区别是什么?...
本问题已经有最佳答案,请猛点这里访问. Possible Duplicate: C++ Virtual/Pure Virtual Explained 虚函数和纯虚函数有什么区别? CPP中的纯虚函数与 ...
- 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类
目录 栈内存 ,堆内存区别 C++ 动态内存 == 与equal区别 复合函数奇偶性 三角函数转换公式: 虚函数和纯虚函数: C++ 中的运算符重载 数据封装,数据抽象 C++ 接口(抽象类): #和 ...
最新文章
- R缺失值识别、过滤、填充(中位数、KNN、随机森林)
- 三维重建:SLAM的尺度和方法论问题
- java 中数组与list_Java中List与数组相互转换实例分析
- OpenGL小试牛刀第一季
- java虚拟机_Oracle独家:Java虚拟机学习指南
- docker登录mysql数据库_Docker下搭建mysql数据库
- linux常用命令速查手册PDF下载
- 电子围栏判断_脉冲电子围栏和张力围栏之间的区别
- c语言编程统计磁盘文件,C语言编程题经典40题(附解答).ppt
- nodejs 之创建文件
- 基于51单片机的简易数字示波器proteus仿真
- Goland常用快捷键
- win10不兼容 软件 ietest
- win10照片文件夹里面图片,突然不显示缩略图
- 南理工计算机科学与工程学院,周俊龙 - 南京理工大学 - 计算机科学与工程学院...
- 华为IoT首席架构师王启军:全栈工程师“养成记”
- 带你深入了解机器人视觉系统工作原理及其应用
- 连续系统与离散系统的时域分析
- ShowWindow 函数
- 技术干货 | 人大金仓KFS基于分区索引的分片入库技术解析
热门文章
- ajax实现关联词提示
- python接口自动化测试框架(post提交添加变量)
- JavaScript对象的创建
- 移动互联网的机会-从零创业,半年净赚50万?
- [BZOJ4557][JLOI2016]侦查守卫
- 安卓高手之路之ClassLoader(二)
- ArrayMap java.lang.ArrayIndexOutOfBoundsException
- react-native新导航组件react-navigation详解
- linux添加磁盘后进入grub,从硬盘安装 Linux 和从 GRUB 命令行启动操作系统
- abap 转换成字符串_SAP ABAP 处理字符串串串串串串串串(详细)