指针和 {l,r} 值引用是否属于表示应该如何访问类型的同一组类型修饰?如果是这样,这个组的名称是什么?例如,{const, volatile, restrict}
都是类型限定符。我正在寻找这样的名称,它可以应用于各种指针和引用(并且希望在某处的标准中提到)。
感谢您的洞察力!
根据 C++ 语法,当它们出现在 [dcl.decl]/4 中定义的ptr-declarator中时,它们都被称为ptr-operator
ptr 运算符: * 属性说明符序列选择cv限定符序列选择 &属性说明符序列选择 && 属性说明符序列选择 嵌套名称说明符 * 属性说明符序列选择cv 限定符序列选择
但这只是语法中的正式名称,就您如何使用指针和引用而言,它们并不相似,我认为将它们组合在一起没有太大价值。指针是对象,可以复制、按值传递、重新分配等。而引用不能做任何这些事情,它们是完全不同的语言结构。试图将它们分组为“表示应如何访问类型”的东西是恕我直言的错误。
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++ 尚不支持此语法。
接受一种类型并返回另一种类型的东西通常称为类型构造函数。例如,类型构造函数*
接受一个类型T
并返回另一个类型pointer to T
。