为什么写一个函数传参时候,可以只传进去一个类型或者类型指针,而无变量名。

C++语言 码拜 10年前 (2015-05-11) 1350次浏览 0个评论

见代码
//函数的声明
static void *oom_realloc(void *, size_t);
//具体的实现
template<int inst>
void* __malloc_alloc_template<inst>::oom_realloc(void *, size_t)
{
void (* my_malloc_handler)();
void *result;
for(;;)
{
my_malloc_handler = __malloc_alloc_oom_handler;
if(0 == my_malloc_handler)
{
__THROW_BAD_ALLOC;
}
(*my_malloc_handler)();
result = realloc(n);
if(result)
return (result);
}
}
//其中直接用了void*传参,为啥。
还有,以下代码中
template<class T>
inline T* _allocate(ptrdiff_t size, T*)
{
     ………
}
其中的T*直接可以传参?表示不理解。

//其中直接用了void*传参,为啥。   //void* 有一个外号, 万能指针, 可以被转换成任何类型, 这里作为返回值没有任何问题
还有,以下代码中
template<class T>
inline T* _allocate(ptrdiff_t size, T*)
{
     ………
}
其中的T*直接可以传参?表示不理解。  //关于 T*,  先学习下模板再说
第二个和模板有关,可是第一个和模板没关系吧。。
30分
static void *oom_realloc(void *, size_t);  这是函数原型,

如下C++Primer Plus:

为什么写一个函数传参时候,可以只传进去一个类型或者类型指针,而无变量名。

楼上正解!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么写一个函数传参时候,可以只传进去一个类型或者类型指针,而无变量名。
喜欢 (1)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!