c面向对象:引用(基础)

一、引用的使用

引用不能重新赋值

引用是另一个变量或对象的别名或同义词

#include

int main()
{
	int a = 1, c = 2;
	int &b = a;
	printf("%d\n", b);
//	int & b = c;
//	printf("%d",c); 
	return 0;
 } 

c面向对象:引用(基础)_第1张图片

c面向对象:引用(基础)_第2张图片

创建指向对象的引用而非类或数据类型(如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

c面向对象:引用(基础)_第3张图片

三、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

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面向对象:引用(基础)_第4张图片

参考书籍《c++入门经典》第12章 

你可能感兴趣的:(c语言,开发语言)