簡體   English   中英

C ++虛函數混淆

[英]C++ Void Function Confusion

我正在做作業,對這些功能要我寫的指示感到困惑。 指示說:

編寫一個稱為GetSalesInfo的void函數,該函數接受以下內容作為用戶的輸入

  • 帳號
  • 發售日期
  • 縣碼
  • 總銷售
  • 裝運重量

此函數應將所有這些輸入返回給調用函數- 我對此部分最困惑

編寫以下值返回函數:

  • CalcDiscount-返回銷售的適當折扣

我不明白第一個功能應該做什么,我已經設置了參數,但是我不知道在實際功能中應該做什么。

void GetSalesInfo(int accNum,       // Account Number - IN
            int month,          // Month of sale - IN
            int day,            // Day of sale - IN
            int year,           // Year of sale - IN
            char countyCode,    // County Code - IN
            float total,        // Total Sale Amount (Before Tax) - IN
            int weight)         // Shipping Weight - IN
{

}

另外,我不知道如何在CalcDiscount函數中訪問所有這些信息。

我並不是要任何人做作業,我只需要向正確的方向稍加推動,我的教授就永遠無法幫助任何人。

好吧,它專門要求一個void函數,這意味着它將通過返回值返回任何內容

C ++具有引用類型,這些引用類型增強了C的實現方式(傳遞指向變量的指針,然后對它們進行解引用以在函數外部對其進行更改):

void GetSalesInfo (int &accNum,
                   int &month,
                   int &day,
                   :
                   :

當您在函數中更改這些變量時,這將反映回您傳入的變量中。

因此,您的函數可以簡單地從用戶輸入數據並將其存儲到這些變量中。 然后,返回到調用函數,您可以將它們傳遞給CalcDiscount ,例如:

float CalcDiscount (int accNum,
                    int month,
                    int day,
                    :
                    :

我相信第一個函數應該使用傳遞引用。 在數據類型之后放置&符號,對變量所做的任何更改都將對傳遞的變量進行,而不僅僅是其副本。 例:

#include <iostream>

void increment(int& num) {
    num += 1;
}

int main(void) {
    int num = 0;
    increment(num);
    std::cout << num << std::endl;
    return 0;
}

我同意,措辭很差。 您顯然不能從一個函數返回多個值,因此有兩個實際選擇。

  1. 返回一個封裝了所有這些值的數據對象(推薦,但可能不適用於此家庭作業分配。
  2. 引用多個輸出參數並在函數中分配它們。

函數聲明只是沒有意義。

另外,我不知道如何在CalcDiscount函數中訪問所有這些信息。

這取決於您需要在何處調用它。 您可能會從GetSalesInfo中調用它。

不好意思地說,但是我相信您編寫的摘要是錯誤的,您的老師希望函數接受這些值,即“ cin”中的值,因此您不會將那些值直接傳遞給函數。

摘要將是這樣的:

void GetSalesInfo()
{
  ////Code of the INPUT function here     
    * Account Number
    * Date of Sale
    * County Code
    * Total Sale
    * Shipping Weight    
}

void A()
{
  GetSalesInfo();

  // Here this GetSalesInfo would be responsible for acceting the values and returning it to the calling function "A"

  //The values would be returned with use of pointers only as your Teacher won't allow global variables :D

  //Rest of the code goes here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM