一、引用的使用
引用不能重新赋值
引用是另一个变量或对象的别名或同义词
#include<iostream>
int main()
{
int a = 1, c = 2;
int &b = a;
printf("%d\n", b);
// int & b = c;
// printf("%d",c);
return 0;
}
创建指向对象的引用而非类或数据类型(如int)
class Cat{
//
};int &b = int;
int &b = Cat;这样是不被允许的
二、引用的对象不能为NULL
c++中引用的概念跟java中的不一样,c++中的引用必须绑定到一个实际存在的对象,不能绑定到NULL;
也就是说在c++中Object &obj=NULL; //这样的句子是绝对违法的
而下面这种
Object &obj=*(new Object());
这样的句子,或许可以编译通过,但是这是非常危险地,因为后面很容易忘记释放这个对象。
string &str=string("123")+"456"; 这样的句子,VC中打开扩展可以编译通过,但是c++规范是不允许的,因为这同样非常危险。str绑定到了临时对象。
以上是c++引用不同之处的例子,实际上还有更多不同。
————————————————
版权声明:本文为CSDN博主「liuwxye」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_30366449/article/details/77199912
三、swap的实现(引用+enum枚举:封装使别人无需传递指针+函数返回多值)
C enum(枚举)
枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量。,它可以让数据更简洁,更易读。
枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。
定义一个枚举类型,需要使用 enum 关键字,后面跟着枚举类型的名称,以及用大括号 {} 括起来的一组枚举常量。每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。
枚举语法定义格式为:
enum 枚举名 {枚举元素1,枚举元素2,……};
1、先定义枚举类型,再定义枚举变量
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day;2、定义枚举类型的同时定义枚举变量
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day;3、省略枚举名称,直接定义枚举变量
enum { MON=1, TUE, WED, THU, FRI, SAT, SUN } day;
#include<iostream>
enum State{
Error, Success
};
void swap(int &x, int &y){
int tmp;
tmp = x;
x = y;
y = tmp;
}
void swap2(int *x, int *y){
int tmp = *x;
*x = *y;
*y = tmp;
}
enum State swap3(int &x, int &y){
int tmp;
tmp = x;
x = y;
y = tmp;
if(x == 20 && y == 15){
return Success;
}
}
int main(){
int a = 15, b = 20;
swap(a, b);
printf("a:%d b:%d\n", a, b);
swap2(&a, &b);
printf("a:%d b:%d\n", a, b);
if(swap3(a, b) == Success)printf("Success!a:%d b:%d\n",a , b);
return 0;
}
参考书籍《c++入门经典》第12章