day3--C++,重載 引用

再此記錄自己學習的過程,如有錯誤,歡迎大家指出。

重載

同名函數只有參數表不同才能算重載。兩個同名函數的參數表相同而返回值類型不同不是重載,而是重複定義,是不允許的

#include <iostream>
//重載
using namespace std;
int add(int a,int b)
{
    return a+b;
}
int add(int a,int b,int c)
{
    return a+b+c;
}
double add(int a,double b)
{
    return a+b;
}
int main()
{
    cout<<"----------重載----------"<<endl;
    int a=add(1,1);
    int b=add(1,1,1);
    double c=add(1,2.2);
    cout << "a="<<a<<" b="<<b<<" c="<<c<< endl;
    return 0;
}

運行結果

 

引用

通過程序的運行來了解一下引用。 

#include <iostream>
using namespace std;
int main()
{
	int a = 99;
	int &b = a;//引用聲明時必須初始化
	int c = 88;
	//輸出ab的地址
	cout << "&a=" << &a << "\n&b=" << &b << endl;
	//改變前的值
	cout << "改變前的值a=" << a << "b=" << b << endl;
	//a++後的值
	a++;
	cout << "a++後的值a=" << a << "b=" << b << endl;
	//b++後的值
	b++;
	cout << "b++後的值a=" << a << "b=" << b << endl;
	//b又引用c
	b = c;
	//輸出abc的地址
	cout << "&a=" << &a << "\n&b=" << &b << "\n&c="<<&c<<"\nb=c後的地址"<<&b<<endl;
	cout << "b又引用c  a=" << a << " b=" << b << " c=" << c << endl;
	//c++後的值
	c++;
	cout << "c++後的值  a=" << a << " b=" << b << " c=" << c << endl;
	//b++後的值
	b++;
	cout << "b++後的值  a=" << a << " b=" << b << " c=" << c << endl;
	//a++後的值
	a++;
	cout << "a++後的值  a=" << a << " b=" << b << " c=" << c << endl;
	cin.get();
	return 0;
}

通過程序可以看到:

1.在b引用了a後,b的地址就等於a的地址。

2.a的值改變b的值也跟着改變。

3.b的值改變a的值也跟着改變。

在b又“引用”c後,b的地址仍然與a相同,而與c無關,b=c;語句是將c的值賦值給b,而b是a的引用,因此a=c;b=c;

在後面的代碼中,無論c如何變化都不會影響ab的值。

簡而言之,可以通過初始化來設置引用,但不能通過賦值來設置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章