指针和{l,r}值引用是否属于同一组类型装饰,表示应如何访问类型?如果是这样,这个组的名字是什么?例如,{const, volatile, restrict}
都是类型限定符。我正在寻找一个这样的名称,可以应用于各种指针和引用(有希望在标准中提到的那个)。
感谢您的见解!
答案 0 :(得分:3)
根据C ++语法,当它们出现在 ptr-declarator 中时,它们都被称为 ptr-operator ,如[dcl.decl] / 4中所定义/ p>
ptr-operator: * attribute-specifier-seqopt cv-qualifier-seqopt & attribute-specifier-seqopt && attribute-specifier-seqopt nested-name-specifier * attribute-specifier-seqopt cv-qualifier-seqopt
但这只是语法中的正式名称,就你如何使用指针和引用而言,它们并不相似,我认为将它们组合在一起并没有多大价值。指针是对象,可以复制,通过值传递,重新分配等。而引用不能做任何这些事情,它们是完全不同的语言结构。试图将它们分组为“表示应该如何访问类型”的东西是恕我直言。
答案 1 :(得分:1)
AFAIK C ++标准没有命名包含指针和引用的“类型装饰器”组,但您可以将它们称为类型构建器。
其他语言中对应的内置类型构建器使用不同的语法。
现代C ++中的模板机制与C ++ 11 using
相结合,可以让您定义自定义类型构建器,可以说理想情况下我们现在应切换到那个而不是“失败的实验” “C语法......
如,
template< class Pointee >
using Ptr = Pointee*;
template< class Referent >
using Ref = Referent&;
int main()
{
Ptr<int> p = new int( 42 );
Ref<int> r = *p;
}
但是,截至2012年8月,Visual C ++尚不支持此语法。
答案 2 :(得分:0)
采用类型并返回另一种类型的东西通常称为类型构造函数。例如,类型构造函数*
采用类型T
并返回另一种类型pointer to T
。