//常量引用
#if 1
void test()
{
//普通引用
int a = 10;
int &b = a;
printf("b:%d\n", b);
/*
引用就是一个常量指针
Type &p ==> Type * const p
常引用
常引用让变量(引用) 拥有只读属性
*/
int x = 20;
const int &y = x;// ==> const int * const y 不能通过y去修改x了
//y = 21;
//常引用的初始化
{
//1 用变量 初始化常引用
int x1 = 10;
const int &y1 = x1;//用x1变量去初始化 常引用
}
{
//2 用字面量 初始化 常引用,会单独的分配内存空间
const int a = 40;//在c++中是真正的常量, c++编译器把a放在符号表中存在符号表中
//int &m = 41;//编译不过 普通引用 引用一个字面量 请问字面量有没有内存地址? 没有
//引用 就是给内存取多个门牌号 (多个别名)
const int &m = 41; //c++编译器会为m 分配内存空间, 并将引用名m作为这段空间的别名
printf("m = %d\n", m);//使用字面量对const引用初始化后,将生成一个只读变量
}
}
#endif
//常引用的函数调用
#if 0
struct Teacher
{
char name[64];
int age;
};
//void printTeacher(const Teacher * const myt)
void printTeacher(const Teacher &myt)//引用是一个常指针
{
//常引用 让 实参变量 拥有只读属性
//myt.age = 33;
printf("myt.age:%d \n", myt.age);
}
void test()
{
Teacher t1;
t1.age = 36;
printTeacher(t1);
cout << "hello..." << endl;
}
#endif