c++中关于reference variable(引用变量)的一些疑惑

sabcasjkd 2019-02-02 01:58:06
利用寒假的时间刚开始接触c++,对于c++中的reference variable(引用变量,我不知道是不是这样翻译,我看的是英文版)有一些疑惑,希望大家能帮忙解答一下,谢谢!
(1)书上给了这样的例子:
char & a = '\n';
但我去xcode中试验时一直会报错,这是为什么呢?我应该怎么改我的代码呢?

#include <iostream>
using namespace std;
int main() {
char & a = '\n';
cout<<a;
return 0;
}

(2)我还去试了一下以下这个例子,我发现也会报错

#include <iostream>
using namespace std;
int main() {
int & n = 10;
cout<<n<<"\n";
return 0;
}

求解答,谢谢!!
...全文
289 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
林多 2019-02-12
  • 打赏
  • 举报
回复
引用变量,可以简单为:

对变量的引用。。所以,等号右边,要是一个变量。

10 "hello world" 这些是字面量,不是变量。

int var = 10, var是一个变量。

=======分割线(关于右值啥的)
至于下面代码编译通过
const int& i = 10;

是因为c++11后,支持这种形式的写法(可编译通过)。因为,加了const限制,变相而言,就是一个无法改变的值了。

但最好,不要这么用。对于右值,还是使用右值引用。

int&& i = 10;

阿_波_ 2019-02-09
  • 打赏
  • 举报
回复
因为'/n'和10都是没有无法通过名称得到的变量,属于右值,但是char&只能引用左值引用,你可以使用char&&或者const char&(这属于万能的引用)来获取右值引用,可以参考一下:https://blog.csdn.net/li1615882553/article/details/86561661
WNs_ACE 2019-02-07
  • 打赏
  • 举报
回复
简单的来说就是,'/n'和10都是属于右值,而int&和char&是属于左值引用,右值类型是无法给左值引用复制的,所以系统就会报错,而2L说const char& a = '\n'就可以用了,是因为const char&是属于常量左值引用,这个常量左值引用就可以引用右值。这个问题就是左值右值的问题。
良人当归 2019-02-02
  • 打赏
  • 举报
回复
细节可以看看这个https://en.cppreference.com/w/cpp/language/reference_initialization
良人当归 2019-02-02
  • 打赏
  • 举报
回复
要么写成一句,const char& a = '\n', 要么写成两句: char a = '\n'; char& b = a;

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧