c – sizeof工作如何?我该怎么写我自己的?

前端之家收集整理的这篇文章主要介绍了c – sizeof工作如何?我该怎么写我自己的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道C并且知道自己的函数sizeof,但是我需要编写自己的sizeof函数,所以请说明它的工作原理?该参数有什么作用?

解决方法

你没有提供任何有意义的细节,你想做什么,所以很难弄清楚你需要什么.

你可以通过你自己的模板功能来“包装”sizeof

template <typename T> size_t my_sizeof() {
  return sizeof(T);
}@H_403_9@ 
 

然后使用它作为

size_t s = my_sizeof<int>();@H_403_9@ 
 

有时可以遇到一个请求来实现类似sizeof的功能,而不使用sizeof.像这样的请求没有任何实际意义,但有时被用作作业作业.人们可以做到如下

template <typename T> size_t my_sizeof() {
  T t;
  return (char *) (&t + 1) - (char *) &t;
}@H_403_9@ 
 

这将需要一个默认的可构建的T.一个较少的限制,但正式非法的解决方案(一个黑客)将是类似的

template <typename T> size_t my_sizeof() {
  return (char *) ((T *) NULL + 1) - (char *) (T *) NULL;
}@H_403_9@ 
 

上述实现实现基于类型的sizeof.

试图模拟基于价值的sizeof的功能可能如下所示

template <typename T> size_t my_sizeof(const T& obj) { 
  return my_sizeof<T>();
}@H_403_9@ 
 

但是,如果至少因为内置的sizeof不能评估其参数,那么这不会远远地等同于内置的sizeof.

最后,这些实现都不会产生积分常数表达式(ICE),如内置sizeof所示.在当前版本的语言中不可能实现ICE的制作.

无论如何,这一切当然完全没有实际价值.只要使用sizeof,当你想知道的大小.

原文链接:https://www.f2er.com/c/115788.html

猜你在找的C&C++相关文章