我有一个关于按值传递对象构造和虚拟方法的问题。
我有一个这样的虚拟方法:
typedef boost::function1<void, void*> Task
class ITaskPool
{
//......
virtual AddTask(Task task) = 0;
};
然后像这样的实现
class TaskPool : public ITaskPool
{
//......
AddTask(Task task);
};
如果我这样使用它;
void MyFunc(void* arg)
{
}
int main()
{
TaskPool tp;
tp.AddTask(&MyFunc);
}
一个Task对象会被创建两次,一次是传递给虚方法,另一次是传递给派生类的方法?
谢谢