什么是typedef char * b?

时间:2017-06-24 18:59:43

标签: c++11 pointers memory-management operator-keyword

我正在阅读这个内存管理代码重载operator new。有像

这样的表达
typedef char *b

以及后面的代码b使用如下:

b(h); //h is a pointer to some class;

h在这里定义:

static Head* h= (Head*) HEAP_BASE_ADDRESS;

我假设当使用b时,它被认为是指向char的指针。但是指针怎么能有像b()这样的表达式?这里有转换吗?我可以理解,因为b现在与h具有相同的地址吗?

1 个答案:

答案 0 :(得分:1)

您发布的第一个代码行是typedef,它为char*创建b的别名。第二个代码行显示从hb功能样式 type conversion

  

我可以理解它,因为b现在与h具有相同的地址吗?

b只是char*的别名,因此除非您存储该表达式的结果,否则b(h)最终不会执行任何操作:

b b_ptr = b(h); // equivalent to: char* b_ptr = ((char*)h);

功能样式类型转换仅适用于单字类型名称,因此如果您想将此转换样式用于例如一个指针,你必须先typedef它。 (这是typedef char *b的原因。)这种转换风格可用于int(3.14 + 6.67)等表达式。