引用
• 引用的概念
• 声明具名的变量引用,即既存对象或函数的别名。
• 引用名特点:使用时类似变量,作为参数时能传引用
#include<iostream>
using namespace std;
int main() {
int a = 1024;
int *p = &a; // p是指针; &a是a的地址
int &x = a; // x是引用,它实际上与a是同一个变量
cout << "a = " << a << endl;
cout << "x = " << x << endl;
cout << "*p = " << *p << endl;
x = 2000;
cout << "a = " << a << endl;
return 0;
}
输出:
a = 1024
x = 1024
*p = 1024
a= 2000
注意:
因为引用不是对象,故
• 不存在引用的数组
• 不存在指向引用的指针
• 存在引用的引用
传值和传引用
传值的本质是:形参是实参的一份复制。
传引用的本质是:形参和实参是同一个对象。
例:
void fun_1(int a); //int类型,传值(复制产生新变量)
void fun_2(int& a); //int类型,传引用(形参和实参是同一个东西)
void fun_3(int* arr); //指针类型,传值(复制产生新变量)
void func_4(int*& arr); //指针类型,传引用(形参和实参是同一个东西)
返回值和返回引用
返回值是返回一个克隆,返回引用是返回他本身。
例子:
class
Number
{
public
:
int
n;
Number(
int
n
) :n(
n
) {}
Number
& add(
int
num
)
{
n +=
num
;
return
*
this
;
}
Number
& sub(
int
num
)
{
n -=
num
;
return
*
this
;
}
void
print()
{
cout
<<
n
<<
endl;
}
};
int
main() {
Number
n(1);
n.add(2).sub(3).add(4);
n.print();
}
输出:4
class
Number
{
public
:
int
n;
Number(
int
n
) :n(
n
) {}
Number
add(
int
num
)
{
n +=
num
;
return
*
this
;
}
Number
sub(
int
num
)
{
n -=
num
;
return
*
this
;
}
void
print()
{
cout
<<
n
<<
endl;
}
};
int
main() {
Number
n(1);
n.add(2).sub(3).add(4);
n.print();
}
输出:3