gpt4 book ai didi

c++ - as_bytes 函数的精确定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:07:25 25 4
gpt4 key购买 nike

我在阅读时发现了这个函数,但我在CPPreference 上找不到它的定义|

programming Principles by Bjarne stroustrup

它的用法是这样的:

ifs.read(as_bytes(x),sizeof(int));`

我了解 read 的工作原理,但您仍然可以帮助我了解 to_bytes 标准定义。

最佳答案

as_bytes 函数返回参数第一个字节的地址(因此 read 调用将覆盖对象 x)。因此,在 C++11 或更高版本中,可以按如下方式编写该函数:

template <class T>
char* as_bytes(T& x) {
return &reinterpret_cast<char&>(x);
// or:
// return reinterpret_cast<char*>(std::addressof(x));
}

评论中链接的版本早于 C++11。 Stroustrup 首先转换为 void* 的原因大概是因为 reinterpret_cast 不能保证在 C++03 中做正确的事情。另请注意,对于具有重载的 & 运算符的参数,旧版本将无法正常工作。

关于c++ - as_bytes 函数的精确定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46108877/

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