C++基于对象编程与function,bind用法
博主今天在看muduo多线程库开源代码的时候,看到了在muduo库中使用的基于对象编程,何为基于对象编程与面向对象编程有什么不同,看了下面例子,基本就可以了解。
在基于对象编程方法实现中,主要用到的是C++中的function和bind,也同时总结下function和bind的用法。
参考:C++ primer,https://www.bilibili.com/video/av45560719/?p=9,https://blog.csdn.net/u011228842/article/details/84032186
基于对象编程
以一个具体例子来说明什么是基于对象编程;
- 面向对象编程的方法:
创建一个基类,创建线程运行run函数,子类通过重写run方法,通过虚函数的运行时绑定,运行子类的方法;
/**基类的实现
*/
#ifndef MULTITHREAD_THREAD_H
#define MULTITHREAD_THREAD_H
#include <pthread.h>
#include <iostream>
class Thread{
public:
Thread():autoDelete(false){
std::cout<<"Thread"<<std::endl;}
virtual ~Thread(){
std::cout<<"~Thread"<<std::endl;}
void start(){
std::cout<<"start run"<<std::endl;
pthread_create(&threadId, NULL , threadRoutine, this);
}
void join(){
pthread_join(threadId, NULL);
}
void setAutoDelete(bool flag){
autoDelete = flag;
}
private:
static void* threadRoutine(void* arg){
Thread* td = static_cast<Thread*>(arg);
td->run();