本文主要是介绍c++ 初始化引用时类型需一致,常量引用的初始化例外,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们知道,C++中,在进行引用的初始化时,需要注意引用的类型必须和引用对象的类型一致,但又两种情况例外,其中一种就是对常量引用的初始化。
引用的类型一致
int val1 = 5;
int &val2 = val1;
val2 = 2.3; //正确,此时不是初始化,val1 和 val2 的值都成为了2
如果把上述代码改为
int val1 = 5;
double &val2 = val1; //错误,引用与引用对象类型不一致
还需要注意初始化引用时必须用对象,既不能用字面值或表达式的计算结果进行初始化,如
int &val1 = 2; // 错,字面值
int &val2 = 3+6; // 错,表达式计算结果
对常量引用的初始化
对常量引用初始化时,允许引用与引用对象类型不一致,只要引用对象的类型可以转换为引用的类型即可,甚至还可以用字面值或表达式计算结果进行初始化。
int val1 = 5;
const int &val2 = val1;
const double &val3 = val1;
const int &val4 = 7;
const int &val5 = 7 + 6;
以下是有关术语的基础概念
引用:
int val1 = 5;
int &val2 = val1; //val1 是引用对象,val2 是引用,即val2 是 val1 的别名,注意val2不是一个对象
常量引用
常量引用一定是const type &类型的,如const int &, const string &类型,不可以通过常量引用改变引用对象的值
string s1 = "hello";
const string &s2 = s1; //s2就是常量引用
s1 = "world"; // 正确
`
这篇关于c++ 初始化引用时类型需一致,常量引用的初始化例外的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!