1. 程式人生 > >c++學習四(過載、指標和引用)

c++學習四(過載、指標和引用)

所謂過載就是:函式名相同,引數不同(包括型別、數量、順序不同)

當我們呼叫函式的時候編譯器能夠通過函式引數的數量或者型別或者順序不同來選擇要呼叫那個函式。但是不能通過返回值的不一樣來過載函式。

#include <iostream>

using namespace std;

int add(int a, int b)
{
    cout<<"int + int"<<endl;
    return a+b;
}

int add(int a, int b, int c)
{
    cout<<"int + int + int"<<endl;
    return a+b+c;
}

double add(double a, double b)
{
    cout<"double + double"<<endl;
    return a+b;
}

double add(int a, double b)
{
    cout<<"int + double"<<endl;
    return a+b;
}

double add(double b, int a)
{
    cout<<"double + int"<<endl;
    return a+b;
}


int main(void)
{

    add(1, 2);
    add(1, 2, 3);
    add(1.0, 2.0);
    add(1, 2.0);
    add(2.0, 1);

    return 0;
}

指標和引用

(指標引起很大的麻煩,所以在c++中避免指標的使用)

int a = 100;

int &b = a;

b就是a的引用也就是說b是a的別名,它們都使用同一塊記憶體空間。

c++引入引用就是避免使用指標,如果使用指標不恰當會引起破壞。

引用如果不是作為函式引數要在定義的時候初始化。如果引用作為函式的引數要在呼叫的時候賦值

引用的是一個變數不是一個值,所以引用不能初始化為變數。

#include <iostream>

using namespace std;

int add_one(int &b)
{
    b = b + 1;
    return b;
}

int main(void)
{
    int a = 9;
    cout<<"a = "<<a<<endl;
    cout<<"add_one = "<<add_one(a)<<endl;
    cout<<"after add_one a = "<<a<<endl;

    return 0;
}