在代码行1中使用'(void)'有什么用?

时间:2018-06-07 02:30:48

标签: c++

我正在用C ++练习反思,代码如下:

typedef void* (*PTRCreateObject)(void); 
class ClassFactory{
private:
    map<string, PTRCreateObject>m_classMap;
    ClassFactory(){};    
public:
    void* getClassByName(string className);
    void registClass(string name, PTRCreateObject method);
    static ClassFactory& getInstance();    
};

2 个答案:

答案 0 :(得分:4)

这是C的遗留物。

在C

void* (*)(void)是一个指向参数的函数的指针。

void* (*)()是一个指向未指定参数的函数的指针。

在C ++中

两者都意味着没有参数。

()是惯用的,(void)允许向后兼容。

答案 1 :(得分:2)

这只是表示无参数的另一种方式。

typedef void* (*PTRCreateObject)(void);  

typedef void* (*PTRCreateObject)();

都是等价的。

返回签名void*只是返回指向某种未知类型的指针。