C++ 函數調用


1、函數參數默認值

函數參數賦默認值時要從后往前賦值,不能后面的沒有賦默認值而后面的賦了默認值,可以前面的沒賦默認值,后面的賦默認值。

#include<stdlib.h>
#include<iostream>
using namespace std;

void fun(int i = 30,int j = 20,int k = 10);

int main(void)
{
    fun();
    fun(100);
    fun(100,200);
    fun(100,200,300);

    system("pause");
    return 0;
}

void fun(int i,int j,int k) // 此處可以不用寫默認值,寫上默認值有的編譯器可能會報錯。
{
    cout << i << "," << j<< "," << k<< endl;
}

 

運行結果:

2、函數重載

默認是在同一個命名空間下的

編譯器選擇與參數適合的函數進行編譯

#include<stdlib.h>
#include<iostream>
using namespace std;

void fun(int i = 30,int j = 20,int k = 10);
void fun(double i,double j);

int main(void)
{
    fun(1.11,2.22);
    fun(100,200);

    system("pause");
    return 0;
}

void fun(int i,int j,int k) // 此處可以不用寫默認值,寫上默認值有的編譯器可能會報錯。
{
    cout << i << "," << j<< "," << k<< endl;
}

void fun(double i,double j)
{
    cout << i << "," << j << endl;
}

運行結果:

 3、內聯函數

內聯函數是C++的增強特性之一,用來降低程序的運行時間。當內聯函數收到編譯器的指示時,即可發生內聯:編譯器將使用函數的定義體來替代函數調用語句,這種替代行為發生在編譯階段而非程序運行階段。

          值得注意的是,內聯函數僅僅是對編譯器的內聯建議,編譯器是否覺得采取你的建議取決於函數是否符合內聯的有利條件。如何函數體非常大,那么編譯器將忽略函數的內聯聲明,而將內聯函數作為普通函數處理。

#include<stdlib.h>
#include<iostream>
using namespace std;

inline void fun(int i = 30,int j = 20,int k = 10);
inline void fun(double i,double j);

int main(void)
{
    fun(1.11,2.22);
    fun(100,200);

    system("pause");
    return 0;
}

void fun(int i,int j,int k) // 此處可以不用寫默認值,寫上默認值有的編譯器可能會報錯。
{
    cout << i << "," << j<< "," << k<< endl;
}

void fun(double i,double j)
{
    cout << i << "," << j << endl;
}

 練習:

使用函數的重載完成返回最大值的方法。

現在有一個數組,定義一個方法getMax(),利用函數的重載,分別實現:

1、隨意取出數組中的兩個元素,傳到方法getMax()中,可以返回較大的一個元素。

2、將整個數組傳到方法getMax()中,可以返回數組中最大的一個元素。

#include <iostream>
using namespace std;
/**
  *函數功能:返回a和b的最大值
  *a和b是兩個整數
  */
int getMax(int a, int b)
{
    return a > b ? a : b;
}

/**
  * 函數功能:返回數組中的最大值
  * arr:整型數組
  * count:數組長度
  * 該函數是對上面函數的重載
  */
int getMax(int *arr,int count)
{
    //定義一個變量並獲取數組的第一個元素
    int maxNum = arr[0];
    for(int i = 1; i < count; i++)
    {
        //比較變量與下一個元素的大小
        if(maxNum < arr[i])
        {
            //如果數組中的元素比maxNum大,則獲取數組中的值
            maxNum = arr[i];
        }    
    }
    return maxNum;
}

int main(void)
{
    //定義int數組並初始化
    int numArr[3] = {3, 8, 6};
    
    //自動調用int getMax(int a, int b)
    cout << getMax(numArr, 3) << endl;
    
    //自動調用返回數組中最大值的函數返回數組中的最大值
    cout << getMax(numArr[0],numArr[2]) << endl;
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM