m0_54879483 2021-02-06 22:10 采纳率: 0%
浏览 29

C++ 引用的初始化列表有关顺序问题。

示例一:

#include <iostream>
using namespace std;

class cstu
{
public:
	int &a;
	int b;
	cstu():a(b) ,b(12)
	{
		
	} 
	void show()
	{
		cout << a << endl << b << endl;
	}
private:
	
protected:
	
};

int main()
{
	cstu stu;
	stu.show();
	return 0;
} 

结果

12

12

示例二:去掉示例一中的引用符号

#include <iostream>
using namespace std;

class cstu
{
public:
	int a;
	int b;
	cstu():a(b) ,b(12)
	{
		
	} 
	void show()
	{
		cout << a << endl << b << endl;
	}
private:
	
protected:
	
};

int main()
{
	cstu stu;
	stu.show();
	return 0;
} 

结果:

一个随机数

12

 

问题:

示例二是因为初始化顺序是按照成员变量声明顺序进行的,在初始化变量a时,变量b没有初始值,所以随机数。

那么为什么添加了引用之后,就会输出a为12了呢?????

  • 写回答

2条回答 默认 最新

  • m0_54879483 2021-02-06 22:16
    关注

    我明白了,用变量b对引用a初始化是将a关联到b的空间上,那么此时a、b值相同,是一个随机值,然后对b初始化,使得a、b均为12。

    评论

报告相同问题?

悬赏问题

  • ¥20 在进行keil5环境中ti芯片可移植性验证出现了如图所示错误(参考的是立创和无名的视频)
  • ¥15 treelib库有读取树数据方法吗?
  • ¥15 咨询一个PYTHON的问题
  • ¥15 机器学习建模调参,roc评价指标
  • ¥15 RCS plot 包内置数据集使用时报错,如何解决?
  • ¥15 keil+mspm0g3507+二维总线舵机
  • ¥15 如何用wireshark分析找出url接口和param参数
  • ¥15 有谁知道这是阿里云那个应用的域名吗,怎么调用?
  • ¥30 正则表达式的一些问题
  • ¥15 C#如何使用不需要安装 Microsoft Excel 的机器上的方法或者库实现:将指定Excel区域导出为图片(例如A1:AO50)