【发布时间】:2016-05-11 01:16:00
【问题描述】:
假设我有一个具有这样一个抽象虚函数的类:
class MyClass{
public:
virtual void MyFunc() = 0;
};
而且我没有其他功能,也没有数据成员。我还可以保证所有继承自它的类都没有任何数据成员,并且除了MyFunc的实现之外没有其他功能。
强迫你有一个指向抽象对象的指针的最大原因(至少在我看来)是实现的大小是未知的......所以有没有办法代替指向这个类的指针只是给出类的一个实例(或伪实例)。以此为例:
void AFunction(MyFunc inst){ //Note the lack of pointer
inst.MyFunc(); //This should call the implementation
}
那么这是可能的还是我只是一个一厢情愿的思想家?
【问题讨论】:
-
" 我也可以保证..." 你刚刚发明了一个更大、更慢的函数指针。为什么不直接使用原来的函数指针类型呢?
void(*)()会做你班级所做的一切。std::function会做同样的事情而且更多,但你需要为“更多”部分付费。
标签: c++ pointers inheritance