#include <iostream>
using std::cout;
using std::endl;
int main()
{
int ival = 0;
const int ival3 = 1;
int * const & ref = &ival;
// int * & ref2 = &ival; //错误,因为 &ival 是const 类型,const类型的引用是const引用
int * const & ref2 = &ival;
int * const & ref1 = &ival3; // 错误,因为ival3是const int 类型,
//error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
const int * const & ref4 = &ival3;
return 0;
}
- error: invalid conversion from 'const int*' to 'int*' ,int* 是指 int * const & ref1 , const int * 是指 const int ival3
- 编译器认为是 将左值绑定到右值
#include <iostream>
using std::cout;
using std::endl;
int main()
{
int * ival = 0;
const int ival3 = 1;
int * const & ref = ival;
ival++;
// int * & ref2 = &ival; //错误,因为 &ival 是const 类型,const类型的引用是const引用
const int * const & ref2 = ival;
ival++;
*ref2 = 0;//assignment of read-only location '*(const int*)ref2'
//int * const & ref1 = &ival3; // 错误,因为ival3是const int 类型,
//error: invalid conversion from 'const int*' to 'int*' [-fpermissive]
//const int * const & ref4 = &ival3;
return 0;
}