我不是在问指针和引用之间的区别。对参考和别名之间的区别感到有些困惑。
就我而言,引用是数据类型,而别名只是描述此数据类型的实用程序的单词?
谢谢!
答案 0 :(得分:2)
不,引用不是数据类型,引用引用其他一些变量。使用引用与使用它引用的变量相同。它与指针非常相似(并且编译器将引用视为指针下的引用并不太可能。)
我从来没有听说过"别名"本身在C ++的上下文中,但是有 type-aliases ,由例如typedef
或using
。还有aliasing与引用和类型别名无关。
答案 1 :(得分:2)
抱歉,你说你不询问指针和引用之间的区别。
要回答您的问题,单词 reference 表示变量指向内存中的某个位置。 Alias 有一些不同的含义,但我在这种情况下最常见的是多个变量引用内存中的相同位置,例如当你试图调用{{1 }}。实现这一目标的一种方法是使用C ++引用,这是一个与指针类似但不完全相同的语言特征的术语。并非C ++中的每个引用都必然引用具有其他名称的内容。您还可以使用指针,地址运算符,引用调用或编译器合并常量进行别名,以便" Hello"和#34;您好"在两个地方指向内存中的相同字节,或联合。可能并非详尽无遗。
如果人们想要引用某个“别名”的引用,即使没有任何其他变量同时引用相同的内存,我也没有强烈的动机去争论。
正如其他几个人所指出的那样,C ++ 14使用术语“别名”来引用用memcpy(p, p, n);
声明的模板类型。 (http://en.cppreference.com/w/cpp/language/type_alias)
答案 2 :(得分:1)
别名是指通过不同名称引用相同数据的任何方式。引用和指针是实现此行为的两种方法。
答案 3 :(得分:1)
类型别名声明引入了一个名称,该名称可以用作type-id表示的类型的同义词。 它不引入新类型,也不能更改现有类型名称的含义。类型别名声明和typedef声明之间没有区别。此声明可能出现在块作用域,类作用域或命名空间作用域中。