基于面向对象的编程的优势与劣势
来源:互联网 发布:windows屏幕水印 编辑:程序博客网 时间:2024/05/17 19:57
一句话总结:利用boost::bind可以让回调函数更加灵活易用,不局限于函数类型及参数个数;然后无法像面向对象的虚函数那样可以一类功能中灵活扩展。
#include <iostream>
#include <boost/bind.hpp>
#include <boost/noncopyable.hpp>
#include <boost/function.hpp>
typedef boost::function<void ()> FunCallback_;
class Parent : boost::noncopyable
{
public:
Parent(int tall):tall_(tall){}
~Parent(){}
void setFunCallback(constFunCallback_& cb)
{
funcallback_ = cb;
}
void start()
{
printf("parent tall:%d\n",tall_);
funcallback_();
}
private:
FunCallback_ funcallback_;
int tall_;
};
class Child : boost::noncopyable
{
public:
Child(int age)
:age_(age),
parent_(180)
{
parent_.setFunCallback(boost::bind(&Child::print,this));
}
~Child(){}
void print()
{
printf("I am child!\n");
}
void start()
{
parent_.start();
}
private:
int age_;
Parent parent_;
};
class Child2 : boost::noncopyable
{
public:
Child2(int age)
:age_(age),
parent_(170)
{
parent_.setFunCallback(boost::bind(&Child2::print,this));
};
~Child2(){}
void print()
{
printf("I am child2!\n");
}
void start()
{
parent_.start();
}
private:
int age_;
Parent parent_;
};
int main(int argc,const char * argv[]) {
// insert code here...
Child child(22);
Child2 child2(23);
child.start();
child2.start();
return0;
}
parent tall:180
I am child!
parent tall:170
I am child2!
Program ended with exit code: 0
- 基于面向对象的编程的优势与劣势
- .NET的优势与劣势
- NET的优势与劣势
- 学习C/C++编程,Linux平台的优势与劣势
- glTexStorage* 与 glTexImage*的优势与劣势
- 技术分析:.NET的优势与劣势
- JSP的优势与劣势浅析
- Spring 注解 @responsebody 的优势与劣势
- 转载::学习C/C++编程,Linux平台的优势与劣势
- 面向对象的优势
- 家族企业的优势、劣势分析
- 小谈人的优势和劣势
- 领域模型的优势、劣势
- 服务层的优势、劣势
- MonoDB的优势及劣势
- SSH的优势和劣势
- JSP的优势 和劣势 与php的比较
- JSP的优势和劣势 与php的比较
- Q137:PBRT-V3,各种采样(Sampling)之间的逻辑
- API VS SPI
- Spring的jdbcTemplate使用方法
- Hadoop YARN中内存和CPU两种资源的调度和隔离
- php7环境下安装php-devel
- 基于面向对象的编程的优势与劣势
- Synergy无法复杂粘贴问题
- 芯片测试
- 数据库操作练习5
- flink之FLIP
- [Linux] linux下安装配置 zookeeper/redis/solr/tomcat/IK分词器 详细实例.
- vue2.0路由切换后页面滚动位置不变BUG
- C++类静态成员与类静态成员函数详解
- Android Studio多渠道打包