gpt4 book ai didi

c++ - C++标准库中的参数类型

转载 作者:行者123 更新时间:2023-11-30 04:31:41 25 4
gpt4 key购买 nike

我注意到一些标准库函数使用 void* 作为参数,例如 memcpy 函数,它的原型(prototype)是:

void * memcpy ( void * destination, const void * source, size_t num );

也有使用char*作为参数的函数,例如ifstream类的read函数,其原型(prototype)为:

istream& read ( char* s, streamsize n );

为什么标准库不统一这些参数,比如全部用char*或者全部用void*。有什么特别的原因吗?

最佳答案

指针可以隐式转换为 void*,但不能转换为 char*。这会导致类型安全 - 如果您关心类型,则不要使用 void*

由于 memcpy 设计用于处理指针类型,因此它使用 void*read 并非设计用于所有指针类型,因此它使用 char*

void foo(void* x) {}
void bar(char* x) {}

int main() {
int* x;
foo(x);
bar(x); // error - can't convert int* to char*
}

关于c++ - C++标准库中的参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8102119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com